遅い→起動時

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

画像をファイルに保存できるペイントツール04

d:id:pmint:20080206:p2の続き。

ペイントツール プロトタイプ04。
ファイルをJPEG形式で保存するようにした。
WindowsApplication1.zip

起動はここからClickOnceで。ClickOnceIE系で。
WindowsApplication1

操作

左ドラッグ(右でも可)
線を描く。
ボタン(上)
1回押すとレイヤーを1つ追加、それ以降は新しいレイヤーのみ消去。
ボタン(「Save」)
JPEG画像として保存。作ったファイルのパスをメッセージボックスで表示。

概要

CanvasにSaveメソッドを追加。
JPEG形式、品質50/100で保存できるように。
保存場所は…

  1. デスクトップ
  2. Local Settings下のTempフォルダー

VBから使えるお手軽Myクラスを使用しているけど、レジストリにある設定が反映されないのでは?
「%UserProfile%\デスクトップ」が無いときはLocal Settings以下の一時フォルダーに保存。
ファイル名はWindowsApplication1.jpg。


今回はクラス構成に変化なし。

モデル→コントロールクラス

内部のクラス(モデル)からコントロールクラスにデータ*1を返すため、Canvas→PaintへSystem.String型の戻り値を返しているが、クラス間の連絡はどうしたものか。

  1. 戻り値、型は文字列だったりユーザー定義型だったり多彩。
  2. 戻り値、型は統一したクラス1つで。
  3. 戻り値を使わない。モデルが結果を渡すためだけにコントロールクラスを呼ぶ。
  4. 戻り値を使わない。結果はもう1度呼んでもらったときに返す。
  5. その他、戻り値を使わない方法。


戻り値を使うと、構造が固すぎるのではないだろうか。
今回の「ファイルをどこに保存したか」などはSave(ファイル保存)の戻り値には相応しくない。ファイルの全データが得られるようじゃないと。
そう考えると、モデルを呼び出したときの戻り値はモデル内のオブジェクトになるのではないだろうか。


複数のオブジェクトを返すようなことは複雑になるのでやらない。
戻り値を使わずに、オブジェクトを返すようなメソッド(アクセサー)を呼ぶ形に。
モデルを呼んだあと、結果などの情報が欲しければさらに呼ぶ。
コントロールクラスはどのモデルクラスを呼んでもいいことにして。


戻り値にでも呼び出されたオブジェクト(内部状態が変わったオブジェクト)を記録しておけば開発の役に立つ。つまり、戻り値はトレースログに。

*1:「ファイルをどこに保存したか」