C# WinForm 类似QQ靠近屏幕边缘隐藏显示
当窗体离屏幕四周一定距离时,改变窗体位置,引导窗体靠边;靠边后,当鼠标离开窗体时,改变窗体位置,窗体隐藏,凸出一点在屏幕内;隐藏后,当鼠标移到窗体时,窗体显示。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace FrmZoom
{
public partial class FrmMain : Form
{
// 窗体是否引导
bool isGuide = false;
// 窗体是否隐藏
bool isShrink = false;
// 窗体引导距离
const int GUIDE_DISTANCE = ;
// 窗体靠边凸出部分距离
const int BULGE_DISTANCE = ; public FrmMain()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
// 设置500毫秒检查一次窗体是否需要缩放
this.timZoom.Interval = ;
// 启动窗体缩放事件
this.timZoom.Enabled = true;
} /// <summary>
/// 引导窗体
/// </summary>
private void GuideFrm()
{
/* 判断窗体边缘是否进入引导距离
* true 靠边,“isGuide = false;”,窗体已引导
* false “isGuide = false;”,窗体未引导
*/
if (this.Left < GUIDE_DISTANCE && this.Left > -GUIDE_DISTANCE)
{
this.Left = ;
isGuide = true;
}
else if (this.Top < GUIDE_DISTANCE && this.Top > -GUIDE_DISTANCE)
{
this.Top = ;
isGuide = true;
}
else if (this.Right < (Screen.GetWorkingArea(this).Width + GUIDE_DISTANCE) && this.Right > (Screen.GetWorkingArea(this).Width - GUIDE_DISTANCE))
{
this.Left = Screen.GetWorkingArea(this).Width - this.Width;
isGuide = true;
}
else
{
isGuide = false;
}
} /// <summary>
/// 隐藏窗体
/// </summary>
private void HideFrm()
{
/* 窗体是否靠边
* true 窗体隐藏
* false
*/
if (this.Left == )
{
this.Left = -(this.Width - BULGE_DISTANCE);
}
else if (this.Top == )
{
this.Top = -(this.Height - BULGE_DISTANCE);
}
else if (this.Right == (Screen.GetWorkingArea(this).Width))
{
this.Left = Screen.GetWorkingArea(this).Width - BULGE_DISTANCE;
}
// 窗体已隐藏
isShrink = true;
// 窗体引导关闭
isGuide = false; // 窗体置顶
this.TopMost = true;
// 在Windows任务栏中不显示窗体
this.ShowInTaskbar = false;
} /// <summary>
/// 显示窗体
/// </summary>
private void ShowFrm()
{
// 窗体是否靠边
if (this.Left == -(this.Width - BULGE_DISTANCE))
{
this.Left = ;
}
else if (this.Top == -(this.Height - BULGE_DISTANCE))
{
this.Top = ;
}
else if (this.Right == Screen.GetWorkingArea(this).Width + this.Width - BULGE_DISTANCE)
{
this.Left = Screen.GetWorkingArea(this).Width - this.Width;
}
// 窗体未隐藏
isShrink = false; // 窗口不置顶
this.TopMost = false;
// 在Windows任务栏中显示窗体
this.ShowInTaskbar = true;
} /// <summary>
/// 窗体缩放
/// </summary>
private void ZoomFrm()
{
// 获取鼠标位置
int mouseX = MousePosition.X;
int mouseY = MousePosition.Y;
// 获取窗体位置
int frmX = this.Location.X;
int frmY = this.Location.Y; /* 鼠标是否在窗体内
* true 显示窗体
* false 隐藏窗体
*/
if (mouseX > frmX - && mouseX < frmX + this.Width + && mouseY > frmY - && mouseY < frmY + this.Height + )
{
// 窗体隐藏时才显示窗体
if (isShrink)
{
ShowFrm();
}
}
else
{
// 窗体引导时才隐藏窗体
if (isGuide)
{
HideFrm();
}
}
} /// <summary>
/// 移动窗体事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmMain_Move(object sender, EventArgs e)
{
// 引导窗体
GuideFrm();
} /// <summary>
/// 窗体缩放事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timZoom_Tick(object sender, EventArgs e)
{
// 缩放窗体
ZoomFrm();
}
}
}
示例项目:http://download.csdn.net/detail/u011689438/8823845
C# WinForm 类似QQ靠近屏幕边缘隐藏显示的更多相关文章
- C# winform 实现 qq 在屏幕边缘 自动隐藏 鼠标移过去 移上去 又自动显示
代码下载地址 http://download.csdn.net/detail/simadi/7677147
- winform-实现类似QQ停靠桌面上边缘隐藏的效果
//实现类似QQ停靠桌面上边缘隐藏的效果! private void timer1_Tick(object sender, EventArgs e) { System.Drawing.Point pp ...
- C# 窗体靠近屏幕边缘自动隐藏*学习(类似于QQ)
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; us ...
- C# WPF 仿QQ靠近屏幕上方自动缩起功能实现
碰到了类似需求,但是上网查了一圈发现感觉要么很复杂,要么代码很臃肿,索性自己实现了一个 几乎和QQ是一模一样的效果,而且核心代码只有20行左右. 代码如下: using System; using S ...
- JS实现类似QQ好友头像hover时显示资料卡的效果
一.应用场景 鼠标hover弹出div,并且鼠标离开后不能马上隐藏,因为这个div上还有功能入口.比如: 鼠标经过好友列表中的好友头像时显示资料卡的效果 hover时显示二维码 二.实现 用如下这样一 ...
- C# 实现窗口程序winform像QQ一样靠近桌面边缘自动隐藏窗口
实现原理: 实现这个功能的原理步骤如下: 1.判断窗体程序是否靠近桌面边缘: 2.获取桌面屏幕大小与窗体程序大小: 3.把窗体程序显示在桌面以外隐藏起来,预留部分窗体方便用户拉出程序: 4.判断鼠标是 ...
- C#:winform窗体 实现类似QQ的窗体在桌面边缘停靠和隐藏
设计思路:1.使用定时器(Timer)来监控鼠标位置和窗体位置,并实现窗体的停靠和隐藏2.当鼠标拖动窗体时,窗体才有可能根据自身位置决定是否停靠3.如果窗体四周没有接触到屏幕边缘则不会停靠4.如果窗体 ...
- winform, 实现窗口程序像QQ一样靠近桌面边缘自动隐藏窗口
实现原理: 步骤如下: 1.判断窗体程序是否靠近桌面边缘: 2.获取桌面屏幕大小与窗体程序大小: 3.把窗体程序显示在桌面以外隐藏起来,预留部分窗体方便用户拉出程序: 4.判断鼠标是否在窗体程序上,在 ...
- WinForm实现类似QQ停靠,显示隐藏过程添加特效效果
原文:WinForm实现类似QQ停靠,显示隐藏过程添加特效效果 这可能是个老题长谈的问题了,只是在项目中会用到这个效果,所以今天做个记录.大家见了别喷我.在项目中的需求是这样的. 打开程序,在屏幕的右 ...
随机推荐
- 更改MYSQL数据库不区分大小写表名
今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢? 后来请教了一个老师才搞定,原来是LINUX下的MYSQL默认是要区 ...
- ESB 设计
ESB 设计 最近为公司完成了一个 ESB 的设计.下面简要说明一下具体的设计方案. 企业 SOA 整体方案 在前一篇<SOA.ESB.NServiceBus.云计算 总结>中说到,SOA ...
- MobileProbe的使用
MobileProbe是CNZZ移动这块统计的一个产品,目前似乎分成了基础版和专业版.下载地址为: http://m.cnzz.com/?a=main&m=download&f=inf ...
- C#版考题
某软件大赛C#版考题整理——[单选题] 一.单选题(10小题共20.0分) 1. 以下JavaScript代码的正确输出结果是:(). 1 2 3 4 5 6 7 8 9 <script t ...
- C#大牛应该知道的一些知识
任何一个使用.NET的人 描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗 ...
- Real-Rime Rendering (1) - 渲染管线(Rendering Pipeline)
提要 渲染管线是实时渲染中最重要的部分,它的最主要的任务就是在给定一个虚拟的场景,包括相机,object,灯光,纹理等等,生成一副2D的图像. 最基础的渲染管线如下图所示: 主要的阶段包括三个:App ...
- Day1:T1 模拟 T2 拓扑排序
T1:模拟 自己第一天的简直跟白痴一样啊...模拟都会打错.. 当时貌似在更新最大值的时候打逗比了... if((sum[x]==max && x<maxh) || sum[x] ...
- ASP.NET虚拟路径小结
一.虚拟路径的概念 “虚拟路径”是指请求 URL 中跟在服务器标识符后面的部分举例. 如绝对路径:http://www.mysite.com/MyApp/Default.aspx,其对应的虚拟路径为: ...
- 算法打基础——HashTable
这一节主要讲很多方面非常重要的hash table等问题. 由于平时很少用到这些,基本都忘了... 怎样快速的在内存中插入.删除.和搜索呢? 这就需要哈希表了 这一节主要知识点是:1 简单的映射表和处 ...
- jquery禁用右键单击、F5刷新
1.禁用右键单击功能 $(document).ready(function() { $(document).bind("contextmenu",function(e) { ale ...