判断一个窗体是否被完全遮挡(比较有意思,但这招有什么用呢?)
2017-01-24 22:12
295 查看
private void Form1_Paint(object sender, PaintEventArgs e)
在窗体的Paint事件中,有一个ClipRectangle的属性,解释为“获取要在其中进行绘画的矩形”
这个属性的作用就是:窗体在刷新的时候,为提高效率一些被遮挡的区域就不用再绘制。
那么判断窗体是否被完全遮挡,只需要判断刷新时是否产生有效绘制。
bool windowPaint = false;
private void Form1_Paint(object sender, PaintEventArgs e)
private void timer1_Tick(object sender, EventArgs e)
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
public static extern bool IsWindowVisible(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern IntPtr GetWindowDC(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("gdi32.dll")]
public static extern int GetClipBox(IntPtr hDC, ref Rectangle lpRect);
public bool WindowPall(IntPtr AHandle)
private void timer1_Tick(object sender, EventArgs e)
这个解决方案没有考虑不规则窗体的情况,可能和GetClipRgn有关,有兴趣的朋友可以自己做做,做出来别忘记和大家分享一下。
http://blog.csdn.net/zswang/article/details/2056199
在窗体的Paint事件中,有一个ClipRectangle的属性,解释为“获取要在其中进行绘画的矩形”
这个属性的作用就是:窗体在刷新的时候,为提高效率一些被遮挡的区域就不用再绘制。
那么判断窗体是否被完全遮挡,只需要判断刷新时是否产生有效绘制。
bool windowPaint = false;
private void Form1_Paint(object sender, PaintEventArgs e)
private void timer1_Tick(object sender, EventArgs e)
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
public static extern bool IsWindowVisible(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern IntPtr GetWindowDC(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("gdi32.dll")]
public static extern int GetClipBox(IntPtr hDC, ref Rectangle lpRect);
public bool WindowPall(IntPtr AHandle)
private void timer1_Tick(object sender, EventArgs e)
这个解决方案没有考虑不规则窗体的情况,可能和GetClipRgn有关,有兴趣的朋友可以自己做做,做出来别忘记和大家分享一下。
http://blog.csdn.net/zswang/article/details/2056199
相关文章推荐
- 判断一个窗体是否被完全遮挡
- java中如何判断一个数是否为正整数(多种种方式比较有意思)对时间处理也可以
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 一个比较有意思的判断两数大小的方法,不用逻辑比较运算符
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 如何判断一个C++对象是否在堆上(通过GetProcessHeaps取得所有堆,然后与对象地址比较即可),附许多精彩评论
- 判断一个整数是否是n^m次方类型数据,并比较乘法和除法性能差异
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 判断窗口是否被完全遮挡的方法
- 判断一个数组是否为单一完全循环数组
- NSDate是星期几和农历 是否在一个时间段判断 时间各种比较
- [VB.NET]如何在一个窗体M中判断另一个窗体N中是否存在一个名称为A的事件?
- 判断一个字符串是否包含另一个字符串(indexOf和正则表达式的比较)
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 编写判断一个字符序列是否为回文。回文是指一个字符序列以中间 字符为基准两边字符完全相同,即顺着看和倒着看是相同的字符序列。
- 如何判断一个窗体是否打开
- 用于判断数组是否完全包含另外的一个数组的所有元素
- 判断比较两个对象是否是一个对象(equals方法)
- iOS-比较两张图片内容是否相同,判断一个imageView是否有image
- 给定一个源字符串,一个字符串字典,判断该字典是否是由源字符串完全分割而来的