2008-12-18 88 views
4

我有一個C++應用程序,它使用Windows的Win32 API,當我不知道爲什麼時,我遇到了GDI +抖動問題。GDI +抖動問題

我有一個自定義控件(自​​定義窗口)。當我收到WM_PAINT消息時,我在圖形設備上使用FillPolygon繪製一些多邊形。此圖形設備是使用BeginPaint中的HDC創建的。

但是,當屏幕上出現多邊形時,它們是抖動而不是透明的,似乎只顯示少量顏色(可能是256?)當我在C#中使用.NET接口在GDI +中執行相同的操作時,工作正常,這讓我不知道發生了什麼。據我所知,我沒有做任何特別的事情,這是一個簡單的例子,應該可以正常工作。難道我做錯了什麼?

編輯:無所謂。它只發生在遠程桌面上,儘管C#示例沒有通過遠程桌面進行抖動。遠程桌面設置爲32位顏色,所以我不知道這是怎麼回事。

+0

您是否找到解決方案?每當我使用具有透明度的筆刷時,它會在遠程桌面上抖動 - 即使透明PNG等在RD上顯示效果也很好。 – Damien 2009-12-19 10:49:46

回答

0

嗯......填充能力由目標設備決定。在遠程桌面上工作時,AFAIK Windows將替換顯示驅動程序,以便可以更改顯示屏支持的功能。

  1. 上WM_PAINT繪畫時,你實際上是直接在屏幕表面上繪製,而.NET通常使用雙緩衝(即將在內存位圖,然後位塊傳輸整個位圖)
  2. 有GDI +中的一些設置影響圖紙質量。也許屏幕上,屏幕外和遠程畫面有不同的默認值?
+0

@Daniel Jennings你接受了這個解決方案,但這裏沒有解決方案。正如Damien評論員所問:您是否找到了解決方案?你接受了一個不回答問題的答案,而是提出了更多問題。 – 2010-12-20 14:51:39

0

它只發生在遠程桌面

許多遠程應用將降低,以降低帶寬要求的顏色深度。雖然我沒有使用遠程桌面,但在某些VNC連接上也是如此。我會檢查你的RD服務器和客戶端設置。

+0

遠程桌面允許您設置您的顏色深度,我已將其設置爲32位。此外,沒有別的東西抖動,只有我正在處理這個應用程序。 C#版本正常工作。 – 2008-12-18 07:49:02