複数のレイヤーをグループ化する方法を考えます。グループ化することでまとめて移動させたりサイズ変更をすることができます。

新しいクラスをつくります。ひとつにまとめたいレイヤーをここに格納します。LayerGroupもLayerと同じように扱いたいのでLayerクラスを継承します。

またLayerクラスを扱いやすくするために新しいプロパティを追加します。

FormManagementGroupクラスを作成します。

最初にダイアログが表示されたときに存在するLayerのリストを表示します。

FormManagementGroup_LoadのなかでツリービューにLayerGroupとLayerを表示させます。

そして複数のチェックボックスにチェックがはいっている状態で[グループ化]を選択するとチェックされているレイヤーをひとつのグループにまとめます。またチェックをいれることができるのは最上位の階層のものだけです。

[グループ化]が選択されたときはチェックされているアイテムをあつめます。そして2つ以上チェックされている場合はレイヤーのビットマップを合成して新しいビットマップを生成します。そしてツリービューにも新しく生成されたグループを表示させます。

CreateBitmap(LayerGroup group)メソッドは新しく生成されたレイヤーのグループからビットマップを生成するためのものです。各レイヤーのX,Y座標、Rightプロパティ、Bottomプロパティから新しいビットマップの大きさを求め、そこに合成されたビットマップを生成します。

グループ化ができるならグループ化の解除もできるようにしたいものです。buttonUnGroup_Clickメソッドはグループ化されたレイヤーを分解するとともにツリービューに表示されているアイテムもこれにあわせて変化させます。