titech-is-cs115 / techdraw

techdraw
0 stars 0 forks source link

ミッション5:無限平面上の描画&キャンバスの拡縮&画像として出力 #1

Open wakita opened 8 years ago

hyoukaija commented 8 years ago

増田卓斗、真家隼也、ヒョウカイ

maiejunya commented 8 years ago
  1. 無限平面上の描画
    • ドラッグすることにより今まで使用された範囲を移動する。
  2. キャンバスの拡縮
    • マウスホイールで行う。拡縮ボタンを作ればほかの機能にもホイールを使える。
    • 右下に拡縮バーを作ってもいいかも知れない。
    • キーボードから変更できてもいいかも知れない。
    • グループ化や折れ線などと同様の実装をすればコード量が減る。
  3. 画像として出力
    • getGraphicsみたいなものがあると先生が仰っていた。現在調査中。
    • 出力ボタンを作る。出力したい範囲が指定できればいいかも知れない。
wakita commented 8 years ago

「3. 画像として出力」についてコメントします.

授業のあとで,getGraphicsが利用できると説明しましたが,もっと簡単な方法を見つけました.

ScalaFX を使って描画画面を作成するときに Canvas を使いますが,このCanvas クラスsnapshot というメソッドを提供しています.snapshot は書き込み可能な画像(WritableImage)を引数に受け取り,そこに描画をします.

一点,注意を要するのがsnapshotは応答性を向上するために,並列処理を行っていて,画像への描画をしつつ,すぐに終了します.ですので,慌てて画像をファイルに保存したりすると,画像が大きい場合に書き込み途中のまま保存されるか,エラーになる恐れがあります.

snapshotは,画像への書き込みが完了すると,第一引数のcallback関数を呼ぶ仕様となっているので,callbackのなかで,画像を利用するのが正しいです.

だれかサンプルコードを書いてここに提供してくれませんか?

wakita commented 8 years ago

「3. 画像として出力」のサンプルコードがだいたいできました.調整がすんだらアップロードします.

wakita commented 8 years ago