4

作成したフォームをスキンするソフトウェアへのプラグインを作成しています。ただし、ボタンはそれらに基づくスキンではなく、標準の灰色のボタンが表示されます。ソフトウェアフォーラムで質問したところ、.NETフォームコントロールは所有者描画であるため、所有者以外の描画ボタンを作成する代わりに、ボタンが正しいスタイルで再描画されないことがわかりました。

system.windows.forms名前空間のすべてのコントロールはownerdrawのようです。

では、どうすれば.NETで標準のC ++プッシュボタンを作成できますか?

それが役立つ場合は、現在C#でコーディングしています。

どうも

4

4 に答える 4

1

Windows.Forms のコントロールは、所有者描画ではなく、システム描画です。これは、ボタン、テキストボックス、またはその他のものであっても、Windowsがデフォルトでそれらをペイントする方法です。コントロールがオーナー描画であることを指定する (つまり、描画する責任がある) ことにより、描画をオーバーライドできます。一部のコントロールはそれをサポートしており、いくつかのコントロールはより細かい粒度で (ListView を参照)、または次のことができます。コントロールの子孫の OnPaint イベントでペイントを完全にオーバーライドします。

あなたの質問はかなり紛らわしいです-プラグインで作成したボタンはスキンされていないことを私は理解しています。明らかに、これらのボタンをペイントするようにこのスキニング フレームワークに指示する必要があります。プラグインにスキニング ペインティング ルーチンを注入するために呼び出すプラグイン フォームまたはメソッドにドロップするコンポーネントが存在するか、存在するはずです。

于 2008-12-06T21:26:26.270 に答える
1

FlatStyleボタンのプロパティをに設定したいようですFlatStyle.System。実際、Windows フォーム ボタンは、デフォルトで WinAPI レベルのオーナー描画であり、フレームワークによって描画されます。

于 2008-12-08T13:47:29.237 に答える
0

またはFlatStyleなどの別の値に設定して、スキンが停止するかどうかを確認しましたか?FlatPopup

また、(システムではなく)設定Flaststyle = Standardすると問題が解決する場合があります

于 2008-12-08T16:57:05.813 に答える
0

Standard がデフォルトであったため、スキン変更は行われませんでした。フラットに設定すると、背景色と前景色が得られますが、ホバー効果の丸い角が失われ、コントロールのスキンが変更されず、カラー スタイルのみが適用されることが示唆されます。フラットは灰色ではない唯一のバージョンですが、ボタン機能の一部が失われます (ホバー、角丸)

于 2008-12-08T18:10:22.657 に答える