DOBON.NET DOBON.NETプログラミング掲示板過去ログ

カスタムボタンコントロールの描画

環境/言語:[VB.NET .NET Framework3.5]
分類:[.NET]

ボタンコントロールを継承した、カスタムコントロールを作成して、
OnPaintをオーバーライドし、自前で描画しているのですが、TextやImageの描画で悩んでいます。

TextAlignやImageAlign、TextImageRelationを反映した描画を行いたいのですが、
方法がいまいち分かりません。

TextとTextAlignのみであれば、StringFormatクラスやTextFormatFlagsを利用して実装
したのですが、Imageが絡むとどの様に描画してよいのか分かりません。
指定した領域(Rectangle)にVBにまかせて、ボタンのTextとImageが描画できる方法があればいいのですが……
(影とかを描画する場合があるので、ClientRectangleとボタンを描画するRectangleが同一ではない場合があります)

考え方とか、実装方法など、何かしらヒント等がありましたらお教えください。
■No31211に返信(まりもんさんの記事)
TextImageRelationがOverlayであればTextとImageの描画は
今の実装でできていると思いますので、後は
ImageAboveText ・・・ 縦位置はImageのAlignが優先されその下にテキスト
TextAboveImage ・・・ 縦位置はTextのAlignが優先されその下にイメージ
ImageBeforeText ・・・ 横位置はImageのAlignが優先されその右にテキスト
TextBeforeImage ・・・ 横位置はTextのAlignが優先されその右にイメージ

組合わせによりイメージとテキストの間に空白が入る

この辺をふまえてイメージとテキストの描画領域を決めれば良いかと思います。
■No31216に返信(shuさんの記事)

やはり、お手軽な方法はないのですね。
イメージが大きい場合やテキストが長い場合等、条件が沢山ありそうですが、
標準ボタンの動作を参考にしつつ、地道に実装していきます。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板