1

角が丸く、水平方向と垂直方向の両方でサイズ変更可能な Win32 ウィンドウを作成しようとしています。私の最初のアプローチは、角丸四角形の BITMAP を作成し、ウィンドウ スタイルを WS_EX_LAYERED に設定し、透過キーを角丸四角形の外側の色に設定することと組み合わせて画面に描画することでした。

これは機能しますが、ウィンドウが固定サイズの場合にのみ見栄えがします。ユーザーがウィンドウのサイズを変更し、それに合わせてビットマップを引き伸ばすことができるようにすると、丸みを帯びた角も引き伸ばされて見えます。滑らかで滑らかな角を持ち、ウィンドウでサイズ変更可能なウィンドウを作成する方法はありますか? 最終的には、ウィンドウにもドロップ シャドウを追加したいと考えています。

4

3 に答える 3

3

Windows API 関数CreateRoundRectRgnSetWindowRgnを混ぜてみます。非常に簡単な例がpInvoke.net Web サイトにあります。

于 2010-02-04T16:39:19.877 に答える
2

フレームなしでウィンドウを作成し、WS_EX_LAYERED を使用して透明度を取得し、カスタム フレームを含むウィンドウを WM_PAINT で「通常どおり」描画するか、オフスクリーン ビットマップを作成して使用できますUpdateLayeredWindow (後者の方法がより効率的です)。

もちろん、描画するものを現在のウィンドウのサイズに合わせて調整する必要があります。通常、さまざまな要素から構成します。たとえば、4 つの「コーナー」ビットマップ (または楕円関数) を使用してコーナーを描画し、次に境界線を描画するなどです。

WM_NCHITTESTまた、 「タイトル」/「ボーダー」/「コーナー」機能 (つまり、ウィンドウの移動とサイズ変更) をウィンドウの任意の領域に割り当てることもできます。

于 2010-02-04T16:55:10.170 に答える
1

既存のビットマップを使用してコーナーを描画する代わりに、楕円(またはその他)を正しい形状で描画してから、それを画面に合成する必要があります。たとえば、各半径がその方向のウィンドウサイズの5%である楕円を決定する場合があります。

于 2010-02-04T16:41:16.500 に答える