自作アイコンエディタ 範囲選択ができるようにする

前回は範囲選択ができるようにしました。それだけでは不十分です。範囲選択された部分を移動できるようにする必要があります。

移動させるだけなら簡単なのですが、範囲選択された部分が通過した場合は以前の色を復元する必要があります。そこで移動したブロックが通過する前に各パネルがそのときの色を保存して通過後に復元できるようにしました。

選択範囲が0~31を超えてしまった場合に調整をしていますが、これによってダブりがでるのでDistinct()で除去しています。Distinctメソッドがうまく機能するようにXYクラスに以下を追加します。

範囲選択されているブロックは左だけでなく上下左右に移動するので、対応できるように以下のメソッドを追加します。

範囲選択されているブロックが移動されるのはどのようなときでしょうか?

ラジオボタンで[範囲選択]が選択されている場合で、
実際に範囲選択がされた状態で、
範囲選択されている内部がクリックされてドロップが完了するまで

です。

まずは

ラジオボタンで[範囲選択]が選択されている場合で、
実際に範囲選択がされた状態で、
範囲選択されている内部がクリックされた

ときの処理です。

これは範囲選択された状態でドラッグされているときの処理です。このときに選択されている部分を移動させます。

ドロップが完了したときが範囲選択された部分を移動させる処理を終了させるときです。SelectionMoveStartXを不適切な値に設定して処理を完了させます。