[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern bool RedrawWindow(IntPtr hwnd, COMRECT rcUpdate, IntPtr hrgnUpdate, int flags);
[DllImport("User32.dll")]
public extern static IntPtr GetDC(System.IntPtr hWnd);
[DllImport("user32.dll")]
private static extern int GetWindowRect(IntPtr hWnd,out Rect lpRect);
//获取窗口边框矩形尺寸
public struct Rect
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
//获取指定句柄窗口矩形位置大小
Rect rect = new Rect();
GetWindowRect(winHandle, out rect);
//画矩形边框
IntPtr DesktopHandle = GetDC(IntPtr.Zero);
Graphics g = System.Drawing.Graphics.FromHdc(DesktopHandle);
Pen pen = new Pen(Color.Black, 2);
g.DrawRectangle(pen, rect.Left, rect.Top, winWidth, winHeight); 我是通过GetWindowRect获取查看的窗口位置及大小,然后在桌面上指定位置绘制矩形,
矩形是绘制到桌面上的,闪烁效果用的RedrawWindow,刷新桌面,屏幕会有点闪,效果不太好。
如果将矩形绘制到指定窗口上,然后用 RedrawWindow刷新指定窗口是不是效果要好点?
或者有其他的方法?
解决方案 »
- ASP.net(c#)项目里需要动态添加记录到页面上,怎么做?
- DataTable过滤重复?
- 如何在richtextbox中插入表格
- cs文件代码注释都是用繁体,但是在简体操作系统里cs有些正常,有些变成了乱码,请问如何解决?
- C# SOCKET 怎样发送和接收 结构体
- 关于windows service的两个问题
- 请问高手:如何在一个DataGrid中同时显示2张表的内容(附例子,请教解决方案)?
- 在DataGrid 中我怎样实现我选中第一个选项下面的全部选中?????
- 在卸载程序时读ConfigurationSettings
- 请推荐几本关于C#的好书
- 在自学C#,求教
- DevExpress GridControl 如何通过快捷键,或者Enter键实现插入一新行?
[DllImport("gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest, //目标设备的句柄
int nXDest, // 目标对象的左上角的X坐标
int nYDest, // 目标对象的左上角的X坐标
int nWidth, // 目标对象的矩形的宽度
int nHeight, // 目标对象的矩形的长度
IntPtr hdcSrc, // 源设备的句柄
int nXSrc, // 源对象的左上角的X坐标
int nYSrc, // 源对象的左上角的X坐标
System.Int32 dwRop // 光栅的操作值
);