d:id:pmint:20080405:p1の続き。
ドキュメント系に分類したクラスについて。
Canvas
キャンバス。絵を管理する。
とは言っても絵のデータは持たない。代わりにレイヤーを1つだけ持つ。
ドキュメント系クラスの代表。絵を操作するときの窓口。
Layer
レイヤー。
絵のデータを持つ。ただしレイヤー1枚分だけ。
他のレイヤーを2枚まで包含する。
- 1階層深いレイヤー
- 1枚下のレイヤー
入れ子でレイヤーの重なりを表現。
リストにしてしまうとループとそれを処理する中間管理職オブジェクトが必要なので。
下のレイヤーを持つ代わりに上のレイヤーを持つというのもあり。
あまり違いはないけど。
合成順は深い階層のほうが先。
合成方法は1つ。透明度を生かしたまま普通に合成。
代わりにフィルターを1つまで持てる。
処理順は深いの→フィルター→下の。
- 1階層深いレイヤーを得る
- それと自身を合成
- フィルター起動
- 1つ下のレイヤーを得る
- それと自身を合成
…これで得られた絵がこのレイヤーの絵ということになる。
一般的なペイントアプリだと「レイヤーグループ」というものがあるけど、実装が面倒になる上、UIまで難しくなるので一元化。
Bitmap
.NET Frameworkのもの。
.NET Frameworkや各種画像形式とのつなぎ役。
Canvas、Layer、その他System.Drawing.Imagingを使うクラスで利用される。
Bitmapを内部に持つ独自クラスに置き換える可能性あり。