# CSharp_TransparentForm **Repository Path**: main_i/CSharp_TransparentForm ## Basic Information - **Project Name**: CSharp_TransparentForm - **Description**: c# 透明窗体 类似加速器效果 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-08-12 - **Last Updated**: 2024-06-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CSharp_TransparentForm # C# 学习笔记(10)加速球 >利用窗体透明和GIF透明背景,实现加速球类似效果(QQ宠物,老年人大概也知道) > ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210601195942615.gif) 1. 新建一个工程winForm工程 2. 设置窗体属性 >设置窗体大小(和你找的GIF大小相同即可) >设置窗体出现位置(屏幕中心) >设置窗体不会出现在任务栏上 >设置窗体在桌面最顶层(不会被其他应用程序界面遮住) >设置窗体背景透明色(和窗体背景色一样) >设置窗体格式(无边框) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210601201125509.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjM3ODMxOQ==,size_16,color_FFFFFF,t_70) >这时窗体就是一个白板 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210601201210740.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjM3ODMxOQ==,size_16,color_FFFFFF,t_70) 3. 添加控件label(只有label可以直接让GIF动态显示) >将label控件的自动大小属性关掉 >设置label控件的位置和大小(大于等于GIF大小) >设置label控件的背景图片(一定要是透明背景的GIF(不是白色背景是透明背景的)) >将文本属性设置为空 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210601201459416.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjM3ODMxOQ==,size_16,color_FFFFFF,t_70) 4. 点击运行,就会出现一个和加速球效果类似的悬浮窗 >但是现在还有一些问题: >1. 运行后无法移动位置 >2. 鼠标移上去后想要切换动作 >3. 打开后不能关闭 5. 添加鼠标事件,运行后可以拖动 >选中label控件,给label添加鼠标按下事件、移动事件和弹起事件 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021060120213087.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjM3ODMxOQ==,size_16,color_FFFFFF,t_70) ```csharp /// /// 记录鼠标按下坐标 /// Point startPoint = new Point(); /// /// 记录鼠标左键是否已经按下 /// bool isDown = false; /// /// 鼠标按下回调函数 /// /// /// private void labGIF_MouseDown(object sender, MouseEventArgs e) { //左键按下 记住按下坐标 if(e.Button is MouseButtons.Left) { startPoint = e.Location; isDown = true; } } /// /// 鼠标弹起回调函数 /// /// /// private void labGIF_MouseUp(object sender, MouseEventArgs e) { //左键弹起 清除按下标志位 if (e.Button is MouseButtons.Left) { isDown = false; } } /// /// 鼠标在控件上移动回调函数 /// /// /// 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)); } } ``` 6. 鼠标放到窗体上,更换GIF效果 >选中label控件,给label添加MouseEnter事件和MouseLeave事件 >就是当鼠标进入控件时,给label换一张背景图 >当然也可以自己添加一些其他的,比如双击或者什么的 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210601202657599.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjM3ODMxOQ==,size_16,color_FFFFFF,t_70) ```csharp /// /// 当鼠标划过 更换gif /// /// /// private void labGIF_MouseEnter(object sender, EventArgs e) { labGIF.Image = Properties.Resources.鼠标滑过; } /// /// 当鼠标离开控件 更换GIF /// /// /// private void labGIF_MouseLeave(object sender, EventArgs e) { labGIF.Image = Properties.Resources.正常状态; } ``` 7. 推出程序 >拖一个右键菜单到窗体上 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210601202852658.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjM3ODMxOQ==,size_16,color_FFFFFF,t_70) >将刚才拖的右键菜单和label关联起来 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021060120304161.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjM3ODMxOQ==,size_16,color_FFFFFF,t_70) >给右键菜单注册单击事件 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210601203159583.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjM3ODMxOQ==,size_16,color_FFFFFF,t_70) ```csharp private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } ``` [源码地址](https://github.com/mian2018/CSharp_TransparentForm)https://github.com/mian2018/CSharp_TransparentForm