これまでは画像ファイルからレイヤーをつくり、そのまま貼り付けていました。今回はレイヤー上の画像をトリミングしたり回転させます。

これは画像を回転させたりトリミングするためのクラスです。

ImageLayerクラス内にあったEditInfosはどのような編集がされたかを記憶しておくためのものです。

メニューをクリックすればトリミングや回転が可能です。

これを組み合わせればこんな写真もつくれます。

[レイヤーの編集]から編集したいレイヤーを選択すると

が表示されるので、[読み込んだ画像の加工]メニューをクリックします。するとレイヤーを編集するダイアログが表示されます。

ここでトリミングを選択すると

回転を選択すると

が表示されます。

ではForm1クラスとFormMovePositionクラスに追加された部分をみていきましょう。

まずドロップダウンメニューを表示できるようにしましょう。メニューアイテムとレイヤーをセットにして、アイテムをクリックしたら対応するレイヤーが取得できるようにしています。

メニューの[レーヤーの編集]のドロップダウンメニューをクリックするとダイアログが出現します。そのダイアログの[読み込んだ画像の加工]をクリックすると、レイヤーを加工するためのダイアログが表示されます。以下の処理はレイヤーを加工するためのダイアログが表示されるまでの処理です。

ではレイヤーを加工するためのダイアログはどのようになっているのでしょうか?

左側にあるのはツリービューコントロールです。回転やトリミングはされた順番によって結果がかわります。処理の履歴のようなものを表示させるためにあります。

[トリミング処理を追加]や[回転の処理を追加]がクリックされるとそのためのダイアログが表示されます。

まずはレイヤーを加工するためのダイアログのクラス FormEditImageを示します。

メニューでトリミングや回転が選択されたらツリービューに項目を挿入します。そしてトリミングや回転処理をおこなうためのダイアログを新たに表示させます。そしてダイアログが消されたら適切な処理をUpdateEditedImages()メソッド内でおこないます。

UpdateEditedImages()メソッドでおこなわれる処理は加工前と加工後のBitmapを表示するだけです。

ツリービューのアイテムが選択されたら画像にどのような変更がされているのかBeforeAfterがわかるようにピクチャーボックスに表示させます。そのための処理を示します。

GetBeforeAfterImageメソッドは加工される前と後のBitmapを取得するためのものです。

それからトリミングや回転処理をおこなったあとその処理を修正できるようにしましょう。

このダイアログで処理を確定するときはメニューの[処理を確定させる]を選択します。

そしてFormMovePositionクラス内で編集内容を反映させる処理がおこなわれます。