【问题标题】:Painting data from device context从设备上下文绘制数据
【发布时间】:2011-12-26 23:52:46
【问题描述】:

我刚收到一个新的device context (DC):

GetDC(someForeignHwnd)

现在大多数普通人都想在上面画画。我不。我想在我自己的程序中显示上下文。或者重复,我什至不介意我偷空的上下文的窗口。

就我而言,我希望它在 Delphi 中的 TPanel 中,但任何其他有助于我理解的东西都可以。

之后,我可能会在我展示 DC 时发现它无效。

我的主要问题是:在我自己的窗口中显示另一个窗口的内容。但这并不重要。首先,我想知道这些 DC 有什么用处。我可以执行以下操作吗?

Canvas.Draw(0, 0, MyNewDC);

答案可以在JavaCPascal 中。这是不可能的还是只是一个愚蠢的想法?

【问题讨论】:

    标签: winapi canvas gdi


    【解决方案1】:

    虽然可以使用通过GetDC() 检索到的设备上下文作为BitBlt() 等的源,但您可能无法获得所需的结果。当您为特定窗口调用GetDC() 时,Windows 实质上会返回屏幕的设备上下文,但会设置一个剪切区域以排除屏幕中不可见窗口的任何部分。例如,如果恰好有另一个窗口与源窗口重叠,则源窗口中被覆盖的部分会从设备上下文中剪裁掉。因此,您只能“检索”实际可见的位。

    向窗口发送WM_PRINTWM_PRINTCLIENT 消息可能会更好。但是,并非所有窗口都会响应这些消息,因此这不是一个通用的解决方案。

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 2013-05-04
      • 2011-01-12
      • 2015-04-04
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多