- PR -

チェックボックスの背景色を変えるには

1
投稿者投稿内容
Ts-Factory
常連さん
会議室デビュー日: 2006/08/08
投稿数: 42
投稿日時: 2008-07-03 23:37
いつもおせわになります。

VB.NET2005でWindowsアプリを作成しています。

チックボックスの □ 部の背景色とを変更できないか検討しております。
可能でしょうか?

PaintイベントのPaintEventArgsを調査しているのですが
検討はずれでしょうか?

アドバイスをお願いいたします。
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2008-07-04 13:07
ぴんふと申します。

PaintイベントのPaintEventArgsの
Graphicsプロパティでグラフィックスが、
ClipRectangleプロパティで矩形が取得できますね。

System.Windows.Forms.CheckBoxを継承して
□部分の色をプロパティとして追加。
OnPaintメソッドをオーバーライドしたものの中で
Checkedプロパティを判定してベタに描画する。
でやってみたら一応できましたよ。
Ts-Factory
常連さん
会議室デビュー日: 2006/08/08
投稿数: 42
投稿日時: 2008-07-04 21:16
ご回答ありがとうございます。

引用:

Graphicsプロパティでグラフィックスが、
ClipRectangleプロパティで矩形が取得できますね。


ラベルを含んだチェックボックス全体の情報は取得できたのですが
□部の情報はどのプロパティを参照すればよろしいでしょうか?
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2008-07-05 12:55
未確認ですがプロパティには無いっぽいです。

前レスで申し上げたとおりベタな方法ですが、
私が試したときは座標を実測&計算しました。
(通常のチェックボックスを含んだ画面のハードコピーをMS ペイントで拡大w)
□部分の左端x座標は2か3だったと思います。
上端のy座標はチェックボックスの高さ÷2 - 5だったかな?
(小数点以下の微調整は必要でしょうね)
幅と高さは9でした。
(上記数値の単位はすべてピクセル)

チェックの印はDrawLineでやろうとしたら綺麗に描けなかったので、
FillPolygonを使いました。(座標は前述のハードコピーをもとに計算しました)

自分で描画するならいろいろ試して微調整するしかないと思います。
もっと効率のいい方法をご存知の識者がいらっしゃるかもしれませんが・・・
1

スキルアップ/キャリアアップ(JOB@IT)