2008-12-18 86 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