2

DwmExtendFrameIntoClientArea関数を使用するときForm.TransparencyKeyは、代わりにガラスが描画される色を選択する必要があります。

問題は、画像編集ツールを作成してTransparencyKeyいて、編集した画像内に色が表示されると、代わりにガラスが表示されることです。

色を失うことなくガラスをクライアント領域に拡張するにはどうすればよいですか?

4

1 に答える 1

0

Form.TransparencyKeyDWM 関数でプロパティを使用する必要がある理由はありません。このプロパティはレイヤード ウィンドウに関連しており、Aero ガラス効果とは関係ありません。TransparencyKeyそれが機能する可能性があるという事実は、設計によるものではなく、実装の詳細 (設定した色の 3 つの RGB 値すべてが同じなど) の結果であると思います。

GDI は黒を透明色として扱うため、ガラスとして表示したいフォームの特定の領域を黒のブラシでペイントする必要があります。黒い塗りつぶしをこれらの領域のみに制限しているため、これが UI の残りの部分に干渉する理由はありません。

もちろん、ガラスとしてレンダリングしている領域に表示される黒いテキスト (コントロールに描画されたものなど) は見栄えが悪くなります。解決策は、GDI+ ベースのレンダリングに切り替えるか、コントロールをガラスとしてレンダリングする領域の外に移動することです。ガラスのように見えるフォームの領域をより細かく制御する必要がある場合DwmExtendFrameIntoClientArea(これは文字通りフレームを一定量だけ拡張するだけです)、DwmEnableBlurBehindWindow代わりに使用することを検討してください。その機能の使用方法については、こちらのより完全な回答を参照してください。

于 2011-01-22T16:08:52.227 に答える