酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

画像ビューアっぽいものを作ってみた。 その1

IlisやFrotherの作者である狩野さんが、公開されているListBoxExを流用して、画像ビューアっぽいものを作ってみようという試みです。

Form1にListBoxExを貼り付けてる状態からスタートです。。

ListBoxExRowTextをベースにしてListBoxExRowを継承したListBoxExRowPictureを作ります。

    // 次ページ表示
    class ListBoxExRowPicture : ListBoxExRow
    {
         // 〜省略〜

        private Image Image{ set; get; }

        public override void Draw(Graphics g, int x, int y, bool tinydraw, bool selected)
        {
            Font font;

            // 選択時背景色塗りつぶし
            if (selected)
            {
                //g.FillRectangle(new SolidBrush(Color.Gray), x, y, _width, _height);
            }

            int ImageWidth = (int)((double)_width * 0.2);

            if(this.Image == null)
            {
                g.FillRectangle(new SolidBrush(Color.Brown), x, y, ImageWidth, _height);
            }
            else
            {
                g.DrawImage(this.Image, 
                            new Rectangle(x, y, ImageWidth, _height),
                            new Rectangle(0, 0, Image.Width, Image.Height),
                            GraphicsUnit.Pixel);
            }

            font = new Font("Tahoma", 9, FontStyle.Bold);
            Size fsize = g.MeasureString(_text, font).ToSize();
            g.DrawString(_text, 
                         new Font("Tahoma", 10, FontStyle.Bold), 
                         new SolidBrush(Color.DarkGray),
                         x + ImageWidth + 10, 
                         y + (_height - fsize.Height) / 2);
            
            // イメージとかの描画もここで行う

            // 行を分ける線
            g.DrawLine(new Pen(Color.Gray), 0, y + _height - 1, _width, y + _height - 1);
        }