アイコンエディタをつくってみる

これはちょっと不便なので、ドラッグしたら連続して色を設定できるようにできないかと考え、PictureBoxExクラスを以下のように変更しました。マウスがクリックされたらisMouseDownをtrueにし、isMouseDown==trueのときにマウス動くとそこにあるピクチャーボックスの背景色が連続で設定できる? ・・・と思ったらうまくいきませんでした。

PictureBoxEx_MouseMoveを以下のように変更すると、マウスを普通に動かすと背景色が設定されますが、マウスを押しているときは反応しません。

ということで、ピクチャーボックスを使ったやり方はうまくいかないので、以下のように変更しました。Panelに変更しました。あと後のことを考えてコンストラクタを変更しました。

Form1内はPictureBoxではなくPanelを使っているので、フィールド変数名とメソッドの名前を変えました。

あと四角形も描画できるようにしました。

フリーと四角形の描画の選択ができるようにしています。GetCheckedRadioButtonメソッドはラジオボタンがチェックされているのかを知るためのものです。

四角形を描画するにはドラッグがはじまった場所と終わった場所を知る必要があります。そこでBeginRectangleとEndRectangleというイベントでこれを取得しています。

ドロップされた場所がPanelExのうえであればいいのですが、そうでない場合もあります。それを検出するためにDoDragDropのあとにもEndRectangleが発生するようにしています。

BeginRectangleイベントとEndRectangleイベントが発生した場合、どうすればいいのでしょうか? イベントハンドラに渡される引数を調べて、開始位置と終了位置を調べます。

本当は円や直線、文字もやってみたいのだが、できるだろうか・・・