您的位置:首页 > 其它

判断一个窗体是否被完全遮挡(比较有意思,但这招有什么用呢?)

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐