C# 学习笔记(10)加速球
Posted 不咸不要钱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 学习笔记(10)加速球相关的知识,希望对你有一定的参考价值。
C# 学习笔记(10)加速球
利用窗体透明和GIF透明背景,实现加速球类似效果(QQ宠物,老年人大概也知道)
本文参考C#仿PS异形启动界面设计https://www.bilibili.com/video/BV1zE411W7jU?t=178
- 新建一个工程winForm工程
- 设置窗体属性
设置窗体大小(和你找的GIF大小相同即可)
设置窗体出现位置(屏幕中心)
设置窗体不会出现在任务栏上
设置窗体在桌面最顶层(不会被其他应用程序界面遮住)
设置窗体背景透明色(和窗体背景色一样)
设置窗体格式(无边框)
这时窗体就是一个白板
- 添加控件label(只有label可以直接让GIF动态显示)
将label控件的自动大小属性关掉
设置label控件的位置和大小(大于等于GIF大小)
设置label控件的背景图片(一定要是透明背景的GIF(不是白色背景是透明背景的))
将文本属性设置为空
- 点击运行,就会出现一个和加速球效果类似的悬浮窗
但是现在还有一些问题:
- 运行后无法移动位置
- 鼠标移上去后想要切换动作
- 打开后不能关闭
- 添加鼠标事件,运行后可以拖动
选中label控件,给label添加鼠标按下事件、移动事件和弹起事件
/// <summary>
/// 记录鼠标按下坐标
/// </summary>
Point startPoint = new Point();
/// <summary>
/// 记录鼠标左键是否已经按下
/// </summary>
bool isDown = false;
/// <summary>
/// 鼠标按下回调函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void labGIF_MouseDown(object sender, MouseEventArgs e)
{
//左键按下 记住按下坐标
if(e.Button is MouseButtons.Left)
{
startPoint = e.Location;
isDown = true;
}
}
/// <summary>
/// 鼠标弹起回调函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void labGIF_MouseUp(object sender, MouseEventArgs e)
{
//左键弹起 清除按下标志位
if (e.Button is MouseButtons.Left)
{
isDown = false;
}
}
/// <summary>
/// 鼠标在控件上移动回调函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void labGIF_MouseMove(object sender, MouseEventArgs e)
{
//左键移动 修改窗体坐标
if (e.Button is MouseButtons.Left && isDown)
{
this.Location = this.PointToScreen(new Point(e.X - startPoint.X, e.Y - startPoint.Y));
}
}
- 鼠标放到窗体上,更换GIF效果
选中label控件,给label添加MouseEnter事件和MouseLeave事件
就是当鼠标进入控件时,给label换一张背景图
当然也可以自己添加一些其他的,比如双击或者什么的
/// <summary>
/// 当鼠标划过 更换gif
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void labGIF_MouseEnter(object sender, EventArgs e)
{
labGIF.Image = Properties.Resources.鼠标滑过;
}
/// <summary>
/// 当鼠标离开控件 更换GIF
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void labGIF_MouseLeave(object sender, EventArgs e)
{
labGIF.Image = Properties.Resources.正常状态;
}
- 退出程序
拖一个右键菜单到窗体上
将刚才拖的右键菜单和label关联起来
给右键菜单注册单击事件
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
源码地址https://github.com/mian2018/CSharp_TransparentForm
以上是关于C# 学习笔记(10)加速球的主要内容,如果未能解决你的问题,请参考以下文章