とりあえずタイルエディットとマップエディットにアンドゥリドゥ機能を付けた。
まるまるビットマップをバックアップするのではなくて、
ピクセル単位で描画履歴を登録~そして巻き戻すみたいなことをしてみたかったのだけど、
SetPixelだけではなく、DrawLineとか使っちゃってるので無理だった(;^ω^)
実際試作でいろいろやっているけど、使い物になりません。
そもそもペイントソフトとしてまったく不十分(-_-;)
選択して移動するの付けなきゃ・・・。
他にもアニメーション再生機能は付けたい。
右にずらしたいっ(; ・`д・´)の図↓
まだ実用には遠い
Re: まだ実用には遠い
> DrawLineとか
* 描く前と後とで差がある画素群だけを覚えておけば(SetPixelと同じ実装で?)いける
* 面倒だから始点と終点を囲む矩形範囲全体を覚えちゃう(矩形範囲コピペとかのUndoと同じ実装で?)
とか考えちゃいますよね.
* 描く前と後とで差がある画素群だけを覚えておけば(SetPixelと同じ実装で?)いける
* 面倒だから始点と終点を囲む矩形範囲全体を覚えちゃう(矩形範囲コピペとかのUndoと同じ実装で?)
とか考えちゃいますよね.
Re: まだ実用には遠い
私だったら、直前の操作まで初期状態からやり直しますね。簡単ですし(^^;
時間かかるようなら途中状態を記憶しておくとか。
時間かかるようなら途中状態を記憶しておくとか。
Re: まだ実用には遠い
なるほど
「やったことを戻す」んじゃなくて,
その直前までやったことを「再現」してやるという考え方か.
「逆の結果になる処理」を考えなくて良い分楽かも.
「やったことを戻す」んじゃなくて,
その直前までやったことを「再現」してやるという考え方か.
「逆の結果になる処理」を考えなくて良い分楽かも.
Re: まだ実用には遠い
いやいやいやw
初期状態から
【線描いて→丸描いて→丸の中を塗りつぶした】
っていう作業をしたときのUndo(最後の塗りつぶしを無かったことにする)ってのは,
もう一回,初期状態から【線描いて→丸描いて】
までの処理を走らせれば達成できるよね,っていう至極単純な話かと.
で,Undoをこの方法で実現するならば,
「線を描く」「丸を描く」「塗りつぶす」等の逆の処理(その操作を取り消す効果を生む処理)ってどうしよう?
って悩む必要がなくなるという.
(線の描画に対するUndo方法の問題自体が消える)
初期状態から
【線描いて→丸描いて→丸の中を塗りつぶした】
っていう作業をしたときのUndo(最後の塗りつぶしを無かったことにする)ってのは,
もう一回,初期状態から【線描いて→丸描いて】
までの処理を走らせれば達成できるよね,っていう至極単純な話かと.
で,Undoをこの方法で実現するならば,
「線を描く」「丸を描く」「塗りつぶす」等の逆の処理(その操作を取り消す効果を生む処理)ってどうしよう?
って悩む必要がなくなるという.
(線の描画に対するUndo方法の問題自体が消える)
Re: まだ実用には遠い
ああー!やっとわかりました( ´∀` )
巻き戻しを考えなくていいなら、
線も円も座標や大きさとか描画するのに必要な情報さえあれば良いのか。
巻き戻しを考えなくていいなら、
線も円も座標や大きさとか描画するのに必要な情報さえあれば良いのか。
Re: まだ実用には遠い
こういう「うおぉぉぉ! 言われてみれば,まさにその通りすぎる!」系の話って,
その方法を真っ先に考えつかなかった自分を呪いたくなりますよね.
正直,今回,みごとに
ぐおおお… って状態に陥りましたですw
その方法を真っ先に考えつかなかった自分を呪いたくなりますよね.
正直,今回,みごとに
ぐおおお… って状態に陥りましたですw
Re: まだ実用には遠い
自分の方針と違うとイメージできずに(。´・ω・)???となる自分が情けない(笑)
そして実装できるのかという問題がまだあるw
そして実装できるのかという問題がまだあるw
Re: まだ実用には遠い
自分の思考パターンはまって抜け出せないことはよくありますね。
他人が書いたコードを読むのは柔軟な発想をするよい訓練になりますよ。
一見して意味不明な?コードほど鍛えられます。実はすごい高度な発想のたまものだったり。
まぁ、単に冗長だったり分かりにくいだけだったりすることも多いですがw
私は仕事でさんざん虐め鍛えられました(;^_^A
他人が書いたコードを読むのは柔軟な発想をするよい訓練になりますよ。
一見して意味不明な?コードほど鍛えられます。実はすごい高度な発想のたまものだったり。
まぁ、単に冗長だったり分かりにくいだけだったりすることも多いですがw
私は仕事でさんざん虐め鍛えられました(;^_^A