2011-01-08 22 views
1

我用簡單的語句,以保持它,呃,簡單:如何將窗口的一部分繪製到內存設備上下文中?

  • 屏幕從0,0到1000,1000(屏幕座標)。
  • 窗口從100,100到900,900(屏幕座標)。
  • 我有一個從0,0到200,200(邏輯座標)的存儲設備上下文。

我需要發送WM_PRINT消息到窗口。我可以通過WM_PRINT將設備上下文傳遞給窗口,但是我無法傳遞它應該繪製到設備上下文中的窗口的哪一部分。

有什麼方法可以改變設備上下文,這會導致窗口將其自身的特定部分繪製到設備上下文中(比如說,它的右下部分從700,700到900,900)?

(這是所有下普通的舊GDI和在C或C++的任何解決方案必須是太。)

請注意: 此問題是一個較大的解決方案,其中設備上下文大小是固定的部分和速度是至關重要的,所以我無法將窗口全部繪製到單獨的設備上下文中,並將我想要的合成完整位圖中的部分放到我的設備上下文中。

回答

1

您可以撥打SetViewportOrgEx()指定設備上下文的座標將被映射到窗口的原點:

SetViewportOrgEx(yourDC, -600, -600, NULL); 

因爲你的窗口的大小爲800x800,通過-600x-600抵消DC的座標系將導致200x200底部正在繪製窗口的右側區域,其餘部分被裁剪。

+0

謝謝Frédéric,這正是我所需要的。 :) – Nell 2011-01-08 17:06:48

相關問題