【Demo 0048】截取窗体背景及控件界面
2011-09-09 23:24
176 查看
本例将提炼了Demo0049显示控件中的方法,单独演示如何截取窗体的背景以及仅截取窗体的控件界面图;
一、代码演示
仅截取窗体中控件的效果图
SendMessage(hWnd, WM_PRINT, (WPARAM)hDCMem, PRF_CHILDREN|PRF_CLIENT|PRF_ERASEBKGND|PRF_NONCLIENT|PRF_OWNED);
截取窗体上所有元素(背影和控件)的效果图
BitBlt(hDCMem, 0, 0, rtWnd.right - rtWnd.left, rtWnd.bottom - rtWnd.top, hDC, 0, 0, SRCCOPY);
//////////////////////////////////////////////////////////////////////////
HBITMAP _CaptureWindow(HWND hWnd, bool bCaptureCtrl)
{
RECT rtWnd;
GetWindowRect(hWnd, &rtWnd);
HDC hDC = GetDC(hWnd);
HDC hDCMem = CreateCompatibleDC(hDC);
HBITMAP hBitmap = CreateCompatibleBitmap(hDC, rtWnd.right - rtWnd.left, rtWnd.bottom - rtWnd.top);
HGDIOBJ hOld = SelectObject(hDCMem, hBitmap);
if (bCaptureCtrl)
{
SendMessage(hWnd, WM_PRINT, (WPARAM)hDCMem, PRF_CHILDREN|PRF_CLIENT|PRF_ERASEBKGND|PRF_NONCLIENT|PRF_OWNED);
} else {
BitBlt(hDCMem, 0, 0, rtWnd.right - rtWnd.left, rtWnd.bottom - rtWnd.top, hDC, 0, 0, SRCCOPY);
}
SelectObject(hDCMem, hOld);
DeleteObject(hDCMem);
ReleaseDC(hWnd, hDC);
return hBitmap;
}
二、效果
左图为显示窗体, 右图为原窗体(仅截取窗体中控件)
左图为显示窗体, 右图为原窗体(截取窗体中控件以及窗体的背影)
演示代码
一、代码演示
仅截取窗体中控件的效果图
SendMessage(hWnd, WM_PRINT, (WPARAM)hDCMem, PRF_CHILDREN|PRF_CLIENT|PRF_ERASEBKGND|PRF_NONCLIENT|PRF_OWNED);
截取窗体上所有元素(背影和控件)的效果图
BitBlt(hDCMem, 0, 0, rtWnd.right - rtWnd.left, rtWnd.bottom - rtWnd.top, hDC, 0, 0, SRCCOPY);
//////////////////////////////////////////////////////////////////////////
HBITMAP _CaptureWindow(HWND hWnd, bool bCaptureCtrl)
{
RECT rtWnd;
GetWindowRect(hWnd, &rtWnd);
HDC hDC = GetDC(hWnd);
HDC hDCMem = CreateCompatibleDC(hDC);
HBITMAP hBitmap = CreateCompatibleBitmap(hDC, rtWnd.right - rtWnd.left, rtWnd.bottom - rtWnd.top);
HGDIOBJ hOld = SelectObject(hDCMem, hBitmap);
if (bCaptureCtrl)
{
SendMessage(hWnd, WM_PRINT, (WPARAM)hDCMem, PRF_CHILDREN|PRF_CLIENT|PRF_ERASEBKGND|PRF_NONCLIENT|PRF_OWNED);
} else {
BitBlt(hDCMem, 0, 0, rtWnd.right - rtWnd.left, rtWnd.bottom - rtWnd.top, hDC, 0, 0, SRCCOPY);
}
SelectObject(hDCMem, hOld);
DeleteObject(hDCMem);
ReleaseDC(hWnd, hDC);
return hBitmap;
}
二、效果
左图为显示窗体, 右图为原窗体(仅截取窗体中控件)
左图为显示窗体, 右图为原窗体(截取窗体中控件以及窗体的背影)
演示代码
相关文章推荐
- C# 解决panel或者其他控件叠加时,此控件背景透明,显示的背景色为窗体背景色问题
- 查找窗体界面中的控件,递归查找等控件处理问题,多使用于权限设置管理。
- 截取控件界面
- 窗体界面控件源码解析
- [iOS基础控件 - 6.9] 聊天界面Demo
- 关于对话框界面控件处理之——为控件添加背景位图
- Demo7:背景截取图标显示
- C# 巧用anchor和dock设计复杂界面(控件随着窗体大小的变化而变化)【转】
- Windows界面编程第五篇 静态控件背景透明化
- [iOS基础控件 - 6.9.1] 聊天界面Demo 代码
- C#绘制半透明窗体,只让窗体背景半透明,而窗体里面的控件不透明
- Windows界面编程第五篇 静态控件背景透明化
- 如何改变界面和非按钮控件的背景颜色
- 如何用控件的CALayer 的特性创建 圆角界面,边框,和设置背景
- 使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
- 【Demo 0033】遍历窗体中控件
- 【iOS基础控件 - 11】【Demo】模仿qq ,微信 UI 聊天界面
- C#Windows窗体界面设计_05_自定义函数 外部类访问读写窗体类的控件的私有属性
- 如何用控件的CALayer 的特性创建 圆角界面,边框,和设置背景
- 窗体框架 界面控件 窗体分割框架 左右分栏