C#で何か作る日記

C#初学者が何かを作るその過程を備忘録として書いていく日記。同じようなことで悩んでいる1人、2人の役に立てたら嬉しいな。プログラムの他にたまに3Dモデルも作ったり作らなかったり。

マウスのイベントを確認

今回はPictureBoxの……というよりマウスのイベントがどのタイミングで発生するかを確認。

こんな感じの画面を作って検証。
f:id:MrSoumen:20170918101742p:plain
番号は
 ①PictureBox。今回はここを中心に色々動作。
 ②同じアプリケーション上だけどコントロール外。
 ③アプリケーション外。

続きを読む

RedoUndoを初めて実装

何かアプリを作るとき、大体実装されてるよなーと思う機能の一つにUndo,Redoがあるけど今まで実装したことがないのでC#の勉強を兼ねて実装。

このサイトをパク…参考にした。
http://zecl.hatenablog.com/entry/20091002/p1zecl.hatenablog.com

ふむふむCommandパターンとMementoパターンを使うのね。なるほどなるほど(初めて見た)。

この例だとmementoに前や後の状態を全て保持していないといけないっぽい。
テキストくらいならそれでも大丈夫っぽいけどペイントソフトとかだとメモリを食い過ぎる気がする。

その場合は状態を持つんじゃなくて、何をしたら前、後の状態に遷移するかを持たせればいいのかな?
例えば、何らかのオブジェクトを移動させるとして・・・

CommandManagerは
move(x, y){
   ...
}

みたいな動作(関数)を受け取ってPictureBoxとかに命令を送る。
同時にUndoのスタックに

move(-x, -y){
   ...
}

みたいに逆の動作を保存しておく。
こうすればメモリを少し節約できるかも。

よし、近いうちに試してみよう。
次はPictureBoxを使ってみるよ。

F○2から移行してきて…

C#を勉強がてら何かを作ってみようと思い、どうせなら備忘録として残しておく。
……記憶力ないからね

で、最初はFC2ブログで運営していこうかと思っていたのだけど、ソースコードをうまく表示ができなくて、はてなにお引っ越し。
ちゃんと表示できるよね……
えっと、『pre記法』を使って…『cs』と入れて…

namespace FloatingWindowTest
{
    public partial class SubForm : WeifenLuo.WinFormsUI.Docking.DockContent
    {

        public SubForm(MainForm main_form)
        {
            
        }
    }
}

おお、出来てる出来てる。
行番号も表示させたいところだけど、それはまたそのうちかな。
とりあえずこんなところで。