GDI+ 抖动问题

发布于 2024-07-11 07:15:00 字数 450 浏览 5 评论 0原文

我有一个使用适用于 Windows 的 Win32 API 的 C++ 应用程序,并且我遇到了 GDI+ 抖动问题,但我不知道为什么会出现这种情况。

我有一个自定义控件(自​​定义窗口)。 当我收到 WM_PAINT 消息时,我在图形设备上使用 FillPolygon 绘制一些多边形。 该图形设备是使用 BeginPaint 中的 HDC 创建的。

但是,当多边形出现在屏幕上时,它们会抖动而不是透明,并且似乎只显示很少的颜色(可能是 256?)当我使用 .NET 接口进入 GDI+ 在 C# 中执行相同的操作时,它工作正常,这让我想知道发生了什么事。

我没有做任何特别的事情,据我所知,这是一个简单的例子,应该可以正常工作。 难道我做错了什么?

编辑:没关系。 它仅发生在远程桌面上,即使 C# 示例不会在远程桌面上抖动。 远程桌面设置为 32 位颜色,所以我不知道这是怎么回事。

I have a C++ application that uses the Win32 API for Windows, and I'm having a problem with GDI+ dithering, when I don't know why it should be.

I have a custom control (custom window). When I receive the WM_PAINT message, I draw some Polygons using FillPolygon on a Graphics device. This Graphics device was created using the HDC from BeginPaint.

When the polygons appear on the screen, though, they are dithered instead of transparent, and only seem to show few colors (maybe 256?) When I do the same thing in C# using the .NET interface into GDI+, it works fine, which is leaving me wondering what's going on.

I'm not doing anything special, this is a simple example that should work fine, as far as I know. Am I doing something wrong?

Edit: Nevermind. It only happens over Remote Desktop, even though the C# example doesnt Dither over remote desktop. Remote Desktop is set at 32-bit color, so I don't know what's up with that.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ま柒月 2024-07-18 07:15:00

嗯...填充能力由目标设备决定。 通过远程桌面工作时,据我所知 Windows 会替换显示驱动程序,以便可以更改显示支持的功能。

  1. 在 wm_paint 上绘图时,实际上是直接在屏幕表面上绘图,而 .net 通常使用双缓冲(绘制到内存位图,然后位图传输整个位图),
  2. gdi+ 中的一些设置会影响绘图质量。 也许屏幕上、屏幕外和远程绘画有不同的默认值?

Hmm... The filling capabilities are determined by the target device. When working over remote desktop, AFAIK Windows substitutes the display driver, so that can change the supported features of the display.

  1. when drawing on wm_paint, you actually draw directly on the screen surface, while .net usually uses double buffering (draws to in memory bitmap and then blits the entire bitmap)
  2. there are some settings in gdi+ that affect the drawing quality. maybe there are different defaults for on-screen, off-screen and remote painting?
铁憨憨 2024-07-18 07:15:00

它仅发生在远程桌面上

许多远程应用程序将减少颜色深度以减少带宽要求。 虽然我没有使用过远程桌面,但在某些 VNC 连接上也会发生同样的情况。 我会检查您的 RD 服务器和客户端设置。

It only happens over Remote Desktop

Many remoting applications will reduce colour depth in order to reduce bandwidth requirements. While I haven't used Remote Desktop, the same happens on certain VNC connections. I'd check your RD server and client settings.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文