2009年4月4日土曜日1:12:00

ジェネリクス,プロパティ,コントロールの動的配置などなど

タグ: , by ゆの

シリアライズ、デシリアライズを簡単(笑)にするクラスを、ジェネリクスを用いて作成。意外に時間がかかった。デシリアライズしたオブジェクトから、画像のパスを受け取り、それをPictureBoxで描画させようと思ったけど、そこまでいけなかった。

    public class XMLSerializerClass<T>
    {
        private T Object_Type;
        public System.Xml.Serialization.XmlSerializer Serializer;

        public T ObjectSelf
        {
            get { return Object_Type; }
            
            set
            { 
                this.Object_Type = value;
                Serializer =
                    new System.Xml.Serialization.XmlSerializer(value.GetType());
            }
        }

        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="obj"></param>
        public XMLSerializerClass(T obj)
        {
            Serializer =
                new System.Xml.Serialization.XmlSerializer(obj.GetType());

            this.ObjectSelf = obj;
        }
//略
    }

このままだと、「常に規定値 null を使用します」と言われてしまうけど。わがんね。

動的に作成したPictureBox5つに、emf画像を読みこませて表示。また、jpg画像も表示させてみた。まえに書いたけど、兄弟のPictureBoxは透過しない。親子なら可能。そのため、赤い丸の周りは、フォームの背景画像が表示されている。PictureBoxで表示したjpg画像は表示されない。すっかり忘れていたけれど。

        private PictureBox[] pb;

        private void createPictureBox()
        {
            this.pb = new PictureBox[5];

            for (int i = 0; i < pb.Length; i++)
            {
                this.pb[i] = new PictureBox();
                this.pb[i].Height = 10;
                this.pb[i].Width = 20;

                this.pb[i].BackColor = Color.Transparent;

                // このコントロールをフォームに追加する
                // これをしないと表示されない
                this.Controls.Add(this.pb[i]);
            }
        }

        private void loadPicture( string file_name )
        {
            Bitmap bitmap = new Bitmap(file_name);
            int limit = pb.Length;

            for (int i = 0; i < limit; i++ )
            {
                this.pb[i].Image = bitmap;
                this.pb[i].Width = this.pb[i].Image.Width;
                this.pb[i].Height = this.pb[i].Image.Height;
            }
        }

参考サイト

0 コメント

コメントを投稿する

0 件のコメント:

コメントを投稿

top