レイヤー機能

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

レイヤー機能

投稿記事 by もるも » 6年前

無事実装・・・と思いきや、タイルエディタで各レイヤーの参照が迷子でアンドゥリドゥが効かない状態(;^ω^)やっちまった。
スクリーンショット (201).png
スクリーンショット (201).png (50.18 KiB) 閲覧数: 45 回
マップリスト用の処理をレイヤーリスト用に使いまわしたいけど型が違う・・・うぐぐぐ。ここだけ処理変えたいっ。なーんて時に
as とか今まで知らなくて初めて使った。
ジェネリックはわがままな書き方出来て便利だなぁとしみじみ思いました。

↓上の画像を被せて合成する処理。

CODE:

public override bool Action(List<TYPE> list)
        {
            if (m_select_num == list.Count - 1)//セレクタが一番下にある場合処理しない
                return false;
            
            //ビットマップ型であるならば
            if (typeof(TYPE) == typeof(Bitmap))
            {
                Bitmap img = new Bitmap(m_data2 as Bitmap);
                using (Graphics g = Graphics.FromImage(img))
                {
                    //m_dataを書き込む
                    g.DrawImage(m_data as Bitmap, 0, 0);
                }
               //両方リストから消して
                list.Remove(list[m_select_num]);
                list.Remove(list[m_select_num]);
                //新しいものを追加
                (list as List<Bitmap>).Insert(m_select_num, img as Bitmap);
                return true;
            }
           
            else
            {
                //他は何もしない
                return false;
            }
        }

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

Re: レイヤー機能

投稿記事 by もるも » 6年前

今のところ問題解消。
レイヤークラスじゃなくてキャンバスクラスにまとめてビットマップリスト持ってもらった。
そして、履歴クラスにどのビットマップの番号か記録できるようにするぐらいで、大改造にならなくて良かった・・・。
スクリーンショット (202).png
スクリーンショット (202).png (45.69 KiB) 閲覧数: 91 回
これでタイルの再編集もばっちり(`・ω・´)