遅い→起動時

http://d.hatena.ne.jp/pmint/

ペイントツールのクラス紹介(2) ドキュメント系クラス

d:id:pmint:20080405:p1の続き。
ドキュメント系に分類したクラスについて。

Canvas

キャンバス。絵を管理する。
とは言っても絵のデータは持たない。代わりにレイヤーを1つだけ持つ。
ドキュメント系クラスの代表。絵を操作するときの窓口。

Layer

レイヤー。
絵のデータを持つ。ただしレイヤー1枚分だけ。


他のレイヤーを2枚まで包含する。

  1. 1階層深いレイヤー
  2. 1枚下のレイヤー

入れ子でレイヤーの重なりを表現。
リストにしてしまうとループとそれを処理する中間管理職オブジェクトが必要なので。


下のレイヤーを持つ代わりに上のレイヤーを持つというのもあり。
あまり違いはないけど。


合成順は深い階層のほうが先。


合成方法は1つ。透明度を生かしたまま普通に合成。
代わりにフィルターを1つまで持てる。


処理順は深いの→フィルター→下の。

  1. 1階層深いレイヤーを得る
  2. それと自身を合成
  3. フィルター起動
  4. 1つ下のレイヤーを得る
  5. それと自身を合成

…これで得られた絵がこのレイヤーの絵ということになる。


一般的なペイントアプリだと「レイヤーグループ」というものがあるけど、実装が面倒になる上、UIまで難しくなるので一元化。

Bitmap

.NET Frameworkのもの。
.NET Frameworkや各種画像形式とのつなぎ役。
Canvas、Layer、その他System.Drawing.Imagingを使うクラスで利用される。


Bitmapを内部に持つ独自クラスに置き換える可能性あり。