C++ 如何将窗口的一部分绘制到内存设备上下文中?
我用简单的语句来保持它,呃,简单:C++ 如何将窗口的一部分绘制到内存设备上下文中?,c++,c,gdi,C++,C,Gdi,我用简单的语句来保持它,呃,简单: 屏幕从0,0变为1000,1000(屏幕坐标) 窗口从100100到900900(屏幕坐标) 我有一个从0,0到200200(逻辑坐标)的内存设备上下文 我需要向窗口发送WM_打印消息。我可以通过WM_PRINT将设备上下文传递给窗口,但无法传递它应该将其窗口的哪一部分引入设备上下文 是否有某种方法可以改变设备上下文,从而导致窗口将其自身的特定部分绘制到设备上下文中(例如,其右下部分从700700到900900) (这都是在普通的旧GDI和C或C++中。任
- 屏幕从0,0变为1000,1000(屏幕坐标)
- 窗口从100100到900900(屏幕坐标)
- 我有一个从0,0到200200(逻辑坐标)的内存设备上下文
(这都是在普通的旧GDI和C或C++中。任何解决方案都必须是)< /P> 请注意: 这个问题是一个更大的解决方案的一部分,在这个解决方案中,设备上下文大小是固定的,速度是至关重要的,因此,我无法将窗口完整地绘制到单独的设备上下文中,并将生成的完整位图中所需的部分blit到我的设备上下文中。
您可以调用以指定将映射到窗口原点的设备上下文坐标:SetViewportOrgEx(yourDC, -600, -600, NULL);
由于窗口的大小为800x800
,因此将DC的坐标系偏移-600x-600
将导致绘制窗口的200x200
右下角区域,并剪裁其余区域。您可以调用以指定将映射到窗口原点的设备上下文坐标:
SetViewportOrgEx(yourDC, -600, -600, NULL);
由于您的窗口大小为
800x800
,将DC坐标系偏移-600x-600
将导致绘制窗口的200x200
右下角区域,并剪裁其余区域。谢谢Frédéric,这正是我需要的。:)谢谢弗里德里克,这正是我所需要的。:)