画像ファイルを描画する

GIF 画像をファイルから直接入力して、C# の DrawImage で描画します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. フォルダーに次のファイル(image.cs)を格納して、プロジェクトに取り込んで下さい。
    プロジェクトの作成は Form を作成する を参照して下さい。
    空のプロジェクトから作成した場合は、必要なファイルは image.csproj と image.cs だけです。
    自動生成を使って Form を作成 の場合はファイルの数は増えますが同じ要領です。
    /**********************************************************/
    /*★ ファイルから GIF 画像を入力して描画する    前田 稔 ★*/
    /**********************************************************/
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    public class MyForm : Form
    {
        public MyForm()
        {
            Paint += new PaintEventHandler(MyHandler);
        }
    
        private void MyHandler(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.DrawImage(new Bitmap("c:\\data\\kishi.gif"), new PointF(10F,50F));
            //g.DrawImage(new Bitmap(@"c:\data\kishi.gif"), new PointF(10F,50F));
        }
    }
    
    class image01
    {
        public static void Main()
        {
            MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    
  2. MyForm では Paint にウインドウを描画するメソッド(MyHandler)を設定します。
    Paint += new PaintEventHandler(MyHandler);
  3. MyHandler() で From にイメージを表示します。
    1. パラメータ(PaintEventArgs e)を受け取って Graphics g を設定します。
    2. DrawImage() でファイルから画像を入力して描画します。
    3. 画像ファイルは .EXE と同じフォルダーに格納するか、フルパスで指定して下さい。
      VC++ のようにプロジェクトのフォルダーにパスは通っていません。
      "文字列" の中で「\」を使うときは「\\」と書きます。
      または、先頭に「@」を付けて記述する方法もあります。
      g.DrawImage(new Bitmap("c:\\data\\kishi.gif"), new PointF(10F,50F));
      g.DrawImage(new Bitmap(@"c:\data\kishi.gif"), new PointF(10F,50F));
    4. 画像ファイルは BMP に限らず、GIF, JPG, TIF, PNG なども使えます。
      入力するファイルが透過 GIF のときは、透明色が有効です。
    5. new PointF(10F, 50F) が表示する左上の座標です。

【演習】

  1. このままでは小さな画像しか描画出来ないので、ウインドウのサイズを 800*640 に広げてみましょう。
    カレンダーの時のように、Form のプロパティから設定することも出来るのですが、今回はもっと簡単な方法を使います。
  2. MyForm() メソッドを下記のソースコードに変更して下さい。
  3. Text がタイトルバーに表示するキャプションです。
  4. BackColor がウインドウの背景色です。
  5. Width がウインドウの幅で Height がウインドウの高さです。
  6. MyForm() のソースコードです。
        public MyForm()
        {
            Text = "Image を表示する";
            BackColor = SystemColors.AppWorkspace;
            Width  = 800;
            Height = 640;
            Paint += new PaintEventHandler(MyHandler);
        }
    

Bitmap にロード

  1. g.DrawImage() の中で new Bitmap("c:\\data\\kishi.gif") を使って毎回画像をロードする方法は、 例えキャッシュされているとは言え、良い方法とは言えません。
    そこで事前に Bitmap bmp; にロードしておいて、ここから描画してみましょう。
  2. ソースコードです。
    new Bitmap("C:\\DATA\\Test\\Ayu.jpg"); で画像をロードします。
    "C:\\DATA\\Test\\" に "Ayu.jpg" を格納しておいて下さい。
    "Ayu.jpg" が手に入らない時は、適当な JPEG 画像を調達して下さい。
    /**************************************/
    /*★ Bitmap に画像を設定    前田 稔 ★*/
    /**************************************/
    using System.Windows.Forms;
    using System.Drawing;
    
    class MyForm : Form
    {
        Bitmap  bmp;
    
        public MyForm()
        {
            Width  = 400;
            Height = 300;
            try
            {
                bmp = new Bitmap("C:\\DATA\\Test\\Ayu.jpg");
            }
            catch
            {
                MessageBox.Show("画像ファイルが読めません!", "C:\\DATA\\Test\\Ayu.jpg");
                return ;
            }
            Paint += new PaintEventHandler(MyHandler);
        }
    
        private void MyHandler(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.DrawImage(bmp, 20, 20);
         }
    }
    
    class form01
    {   public static void Main()
        {   MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    
  3. 画像ファイルを描画する Image Class を使うと、プログラムが解り易くなります。
    Image Class の説明は キー操作で画像を移動する を参照して下さい。

超初心者のプログラム入門(C# Frame Work)