4

Windows 用の Win32 API を使用する C++ アプリケーションを使用していますが、GDI+ ディザリングに問題がありますが、その理由がわかりません。

カスタム コントロール (カスタム ウィンドウ) があります。WM_PAINT メッセージを受信したら、グラフィック デバイスで FillPolygon を使用していくつかのポリゴンを描画します。このグラフィック デバイスは、BeginPaint の HDC を使用して作成されました。

ただし、ポリゴンが画面に表示されると、透明ではなくディザリングされ、いくつかの色 (おそらく 256?) しか表示されないように見えます.NET インターフェイスを使用して C# で同じことを GDI+ に実行すると、正常に動作します。何が起こっているのか疑問に思っています。

私は特別なことをしていません。これは、私の知る限り、正常に動作するはずの単純な例です。私は何か間違ったことをしていますか?

編集:気にしないでください。C# の例ではリモート デスクトップでディザ処理を行っていませんが、リモート デスクトップでのみ発生します。リモート デスクトップは 32 ビット カラーに設定されているため、それがどうなっているのかわかりません。

4

2 に答える 2

0

うーん...充填能力はターゲットデバイスによって決まります。リモートデスクトップで作業している場合、AFAIK Windowsはディスプレイドライバーを置き換えるため、サポートされているディスプレイの機能が変更される可能性があります.

  1. wm_paint で描画する場合、実際にはスクリーン サーフェスに直接描画しますが、.net では通常、ダブル バッファリングを使用します (メモリ ビットマップに描画してからビットマップ全体をブリットします)。
  2. gdi+ には、描画品質に影響を与える設定がいくつかあります。オンスクリーン、オフスクリーン、リモートペインティングでデフォルトが異なるのではないでしょうか?
于 2009-01-03T22:57:08.103 に答える
0

リモートデスクトップでのみ発生します

多くのリモーティング アプリケーションは、帯域幅の要件を減らすために色深度を減らします。私はリモート デスクトップを使用していませんが、特定の VNC 接続でも同じことが起こります。RD サーバーとクライアントの設定を確認します。

于 2008-12-18T07:41:57.070 に答える