从设备上下文绘制数据

时间:2011-12-26 23:52:46

标签: winapi canvas device-context

我刚刚获得了新的device context(DC):

GetDC(someForeignHwnd)

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

在我的情况下,我希望TPanel位于Delphi,但其他任何有助于我理解的内容都会发生。

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

我的主要问题是:显示我自己的另一个窗口的内容。但这并不重要。首先,我想知道这些DC是如何使用的。我可以做类似以下的事情吗?

Canvas.Draw(0, 0, MyNewDC);

答案可以在JavaCPascal。它只是不可能或只是一个愚蠢的想法吗?

1 个答案:

答案 0 :(得分:1)

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

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