返回GDI+的Bitmap的屏幕捕捉方法和问题

Baryon Baryon 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我今天写出了返回GDI+的Bitmap的屏幕捕捉方法,供需要者参考。(记得前几天看到有人问这个问题)代码如下:
enum ScreenType
{
FullScreen,
WorkArea,
ActiveWindow
};

Bitmap* CaptureScreen(ScreenType type)
{
HWND wnd;
HDC hDC;
if (type == ActiveWindow) {
wnd = ::GetActiveWindow();
hDC = ::GetWindowDC(wnd);
}
else {
wnd = ::GetDesktopWindow();
hDC = ::GetDC(NULL);
}

ATLASSERT(::IsWindow(wnd));

CRect rect;

if(type==WorkArea )
{
::SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
}
else
{
::GetWindowRect(wnd, &rect);
}

HDC hMemDC = ::CreateCompatibleDC(hDC);

//most of the remaining code is normal GDI stuff
HBITMAP hBitmap = ::CreateCompatibleBitmap(hDC, rect.Width(), rect.Height());
if (hBitmap)
{
HBITMAP hOld = (HBITMAP) ::SelectObject(hMemDC, hBitmap);
BitBlt(hMemDC, 0, 0, rect.Width(), rect.Height(), hDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hOld);
DeleteDC(hMemDC);
ReleaseDC(NULL, hDC);
}

return Bitmap::FromHBITMAP(hBitmap, NULL);
}

这个方法在大多数情况下是有效的。

存在的问题:
如果屏幕上有半透明窗口,在取得Desktop的时候无法取到。半透明窗口就像完全透明了一下。而键盘上的「Print Screen」却可以正确取到。如果你有正确的办法请告知。
...全文

相关推荐

VB源程序影像捕获程序

VB源程序,用来影像捕获,代码很小,VB源程序,用来影像捕获,代码很小

lpylpy2003

Windows屏幕图像差异检测:GPU加速的像素级变化识别方案

屏幕图像差异检测是一种用于识别两帧画面间视觉变化的基础计算机视觉技术,其核心原理是通过空间域或频域特征比对实现变化区域定位。相比传统CPU逐像素比对,现代方案依托GPU直采(如DXGI桌面复制)与块级哈希(如DCT+LoG双模指纹)提升实时性与鲁棒性,具备低延迟、抗DPI缩放、多显卡适配等工程价值。该技术广泛应用于RPA自动化、远程桌面增量更新、UI界面变更巡检及无障碍辅助交互等场景,尤其适合需在.NET环境实现纯托管、无OpenCV依赖的生产级屏幕监控系统。

as2886089

C# DirectShow音视频采集库源码拆解:PCM混音与屏幕录制实践

音视频采集是直播、录屏和多媒体应用开发的基础环节。DirectShow作为Windows平台经典的媒体架构,至今仍兼容大量采集设备。本文基于一套2.0时代的C#采集库,从底层原理出发,讲述如何通过DirectShow构建采集链路,获得原始PCM音频流与Bitmap视频帧。针对多路音频混音,重点解析了PCM样本的对齐策略与均值混音算法,避免削波和爆音。同时介绍了屏幕录制与摄像头采集的回调机制,以及64位环境下兼容32位组件的注意事项。文章还提供了工程实践中的编译踩坑记录和调用示例,帮助开发者快速将这套高内聚、

故小里

vc GDI+实现屏幕截图,图片裁剪,

VC2015实现简单的整个屏幕截图保存为jpg, 然后再该图片上根据需要裁剪特定大小的图片在另存jpg, 以及其他范例。

suyupin

C#中使用双缓冲以及BitBlt提高GDI+绘图效率的示例程序

利用GDI+在Form中绘制60*60个圆点,显示帧速,使用三种不同方法,分别是: 1.直接绘制 2.使用双缓冲 3.使用BitBlt函数 对比三种函数的帧速,以及提速效果 开发环境为vs2008

passionhzy
评论 11
收藏 已收藏
分享
返回顶部
Baryon
图形处理/算法 19,463 成员 50,678 内容