【问题标题】:Screen capture to Direct2D compatible bitmap截屏到 Direct2D 兼容位图
【发布时间】:2015-05-02 03:59:35
【问题描述】:

我需要在给定 HWND 句柄的情况下捕获窗口的屏幕并将捕获存储在 ID2D1Bitmap 对象中,以便通过我的渲染目标绘制此位图。

我怎样才能达到这个结果?

【问题讨论】:

标签: c++ bitmap rendering screenshot direct2d


【解决方案1】:

Direct2D 不提供此类功能。

一种可能的方法是,首先通过GDI (1) 捕获屏幕,然后从返回的位图句柄创建ID2D1Bitmap (2)。

  1. 获取HBITMAP - 检查此答案:https://stackoverflow.com/a/5164267/3962893。在HBITMAP hbDesktop = CreateCompatibleBitmap( hdc, width, height); 之前,您需要该部分。hbDesktop 变量将包含屏幕捕获位图的句柄。

  2. HBITMAP 创建一个ID2D1Bitmap - 检查这个答案:https://stackoverflow.com/a/27500938/3962893。它将图标复制到ID2D1Bitmap,但工作流程是相同的。除了:

    hIcon := SendMessage(Handle, WM_GETICON, ICON_BIG, 0); .... wicFactory.CreateBitmapFromHICON(hIcon, wicBitmap);

    您必须更改为:

    wicFactory.CreateBitmapFromHBITMAP(hbDesktop, wicBitmap);

【讨论】:

    猜你喜欢
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 2017-12-22
    • 2015-04-17
    • 2015-04-20
    • 1970-01-01
    • 2011-10-08
    相关资源
    最近更新 更多