标题: C#取得当前窗体图片
来源:互联网 发布:谜画之塔mac下载 编辑:程序博客网 时间:2024/06/09 19:07
标题: C#取得当前窗体图片
- 糊涂小猪 2007-04-11 15:55 阅读:779
- 评论:0 | 添加评论
Yesterday,客户对需求提出了一些变更,其中有提到一点就是要打印当前的确窗体.
想到的一个解决方案就是模拟按下ALT+PRNT的组合键,然后从CLIPBOARD中取的要打印的图形.
当然,第一步是要取得你当前的窗体..实现方法如下:
[DllImport("user32.dll")]
private static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("user32.dll")]
private static extern IntPtr ReleaseDC(IntPtr hc,IntPtr hDest);
[DllImport("user32.dll")]
private static extern IntPtr GetWindowDC(IntPtr hwnd);
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
private static extern int GetWindowRect(IntPtr hwnd,
ref RECT lpRect);
private Bitmap GetActiveForm()
{
IntPtr platDC = GetForegroundWindow();
IntPtr windDC = GetWindowDC(platDC);
Rect rect = new Rect();
GetWindowRect(windDC,ref rect);
Bitmap bmp = new Bitmap(rect.right - right.left,rect.bottom - rect.top);
Graphics g = Graphics.FromIamge(bmp);
IntPtr hdc = g.getHdc();
BitBlt( hdc,0,0,bmp.width,bmp.height,windDC,0,0,3278651);
g.ReleaseHdc(hdc);
g.dispose();
ReleaseDC(platDC,winDC);
return bmp;
}
private void print()
{
Bitmap bm = new Bitmap();
bm = GetActiveForm();
// past the bmp to clipboard
SendKeys.Send("%{PRTSC}");
Application.DoEvents();
// print bmp
IDataObject iData = Clipboard.GetDataObject ();
Image img = (Image)iData.GetData (DataFormats.Bitmap);
e.Graphics.DrawImage(img,0,0);
}
That's all!!
- 标题: C#取得当前窗体图片
- VB 获得当前窗体标题
- C#刷新当前窗体
- C#退出当前窗体,显示另一个窗体
- C# 关闭当前窗体打开另一窗体?
- C# Hide() 隐藏当前窗体
- C# 取得当前系统所有用户名
- 【WPF】C#获取运行的窗体标题
- C#创建不规则窗体-图片
- robot脚本__获取当前弹出窗体标题的讨论
- c# 其它窗体获得当前应用程序主窗体的句柄
- C# 关闭当前窗体开启一个新的窗体
- C#取得图片宽度与高度
- C#中当前计算机的环境的取得
- C#鼠标按住标题移动时移动窗体
- c#改变winform窗体 标题的字体大小 背景 和颜色
- C#透明窗体(png图片渐变)源码
- C#使用图片制作不规则窗体
- ASP 特殊字符的转换
- Wince 6.0 教程---第一课 环境搭建
- 自动拨号连接
- C# DllImport的用法
- CSS层样式自学笔记1
- 标题: C#取得当前窗体图片
- 相爱,要做20件事
- 教师节百科
- 遭遇SIGPIPE
- 哪位高手帮助解答一下的
- 程序员是如何喝酒的?(转)
- PHP的OpenID库 Community-ID 1.1.0 RC1
- 将会被社会淘汰的8种人 看看有没有你
- Java内存管理