範囲選択して移動している途中で[選択されている部分だけ左右反転]を選択すると問題がおきます。[選択されている部分だけ左右反転]をすることで白抜きになっていた部分が元にもどってしまいます。さらにどこか別の部分(矩形の内部でも外部でも同じ)をクリックすると白抜きになっている部分がもとに戻ります。

これは選択範囲の移動の処理をするときにblankBitmapやblankColorPointsを追加しました。これに関する処理がそれ以前に追加された機能では無視されていたのが原因です。新しい機能を追加したら以前の機能がうまくできなくなったでは困るので修正します。

SelectionRotateFlipメソッドの一部修正

選択範囲を回転・反転させるSelectionRotateFlipメソッドを一部修正します。また範囲指定が解除されるまでBitmapプロパティは変更しないことにします。

ReverseColorInRectangleメソッドの一部修正

選択範囲の色を反転させるReverseColorInRectangleメソッドも一部修正が必要です。

ReplaceColorInRectangleメソッドの一部変更

選択部分の色を置換するReplaceColorInRectangleメソッドも一部変更しました。

SetSelectionTransparentメソッドの修正

選択されている部分の色を透明に変えるSetSelectionTransparentメソッドは大幅に修正することになりました。第一引数は使われていません。直接BitmapRectangleにアクセスしています。

以下は範囲選択した状態で移動し、そのあと[色の置換(選択されている部分だけ)]で赤を透明に置換した場合の実行結果です。背景のみが透明になっているのが確認できます。

選択範囲だけではなく全体を反転させたり色を変えるメソッドは呼び出されたときにUniteBitmapRectangleメソッドを呼び出しているので変更する箇所はありません。

サイズ変更されたときの処理

範囲指定されているときにサイズ変更の処理をすると範囲選択されている部分がそのまま残ってしまうので、処理の前にUniteBitmapRectangleメソッドで範囲指定されている部分を結合させてから処理をしています。

スクロールされたときの処理

それからスクロールされたときの処理も変更する必要があります。