C# 画像の表示、イベントの登録

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
MNJ

C# 画像の表示、イベントの登録

#1

投稿記事 by MNJ » 10年前

C#を学習中で、リファレンス等を見ながら画像を表示させようとしているのですが、うまくいきません。

コード:

using System;
using System.Windows.Forms;
using System.Drawing;

class Test:Form 
{

  
    public static void Main() {

        Test fm = new Test();
        Application.Run(fm);
       
    }

    public Test() {

        this.Height = 600;
        this.Width = 800;
        this.Text = "TEST";
        this.Paint += new System.Windows.Forms.PaintEventHandler(aaa);
  
 
    }

    private void aaa(PaintEventArgs e)
    {
       
        Bitmap mapImage = new Bitmap("c:\\image\\map001.bmp");

       
        Point ulCorner = new Point(100, 100);

        
        e.Graphics.DrawImage(mapImage, ulCorner);
    }
}
デリゲートに一致するaaaのオーバーロードはありません。というエラーがでます。
何がいけないのでしょうか、教えていただきたいです。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: C# 画像の表示、イベントの登録

#2

投稿記事 by みけCAT » 10年前

・21行目のaaaをthis.aaaとする
・26行目をprivate void aaa(object sender, PaintEventArgs e)とする
こうするとどうなりますか?
PaintEventHandler デリゲート (System.Windows.Forms)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

MNJ

Re: C# 画像の表示、イベントの登録

#3

投稿記事 by MNJ » 10年前

・21行目のaaaをthis.aaaとする
・26行目をprivate void aaa(object sender, PaintEventArgs e)とする

このとおりに行うと、正常に動作しました。ありがとうございました!

しかしもともとの記述はほぼリファレンスからのコピペなんですが
何が問題だったんでしょうか。解説していただけないでしょうか。

コード:

private void DrawImagePoint(PaintEventArgs e)
{         
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");

    // Create Point for upper-left corner of image.
    Point ulCorner = new Point(100, 100);

    // Draw image to screen.
    e.Graphics.DrawImage(newImage, ulCorner);
}

http://msdn.microsoft.com/ja-jp/library ... 10%29.aspx

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: C# 画像の表示、イベントの登録

#4

投稿記事 by みけCAT » 10年前

MNJ さんが書きました:しかしもともとの記述はほぼリファレンスからのコピペなんですが
何が問題だったんでしょうか。解説していただけないでしょうか。

(中略)

http://msdn.microsoft.com/ja-jp/library ... 10%29.aspx
PaintEventHandlerの引数の型が違うのが問題です。
ここで提示されているリンク先には、最初に提示されたコードの前半にあたると思われるコードが見当たりません。
別のリファレンスからコピペしたのでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: C# 画像の表示、イベントの登録

#5

投稿記事 by YuO » 10年前

MNJ さんが書きました:しかしもともとの記述はほぼリファレンスからのコピペなんですが
何が問題だったんでしょうか。解説していただけないでしょうか。
リファレンスのサンプルメソッドを勝手にイベントハンドラーとして登録するものだと考えたことが問題かと。

提示されたURIは,Graphics.DrawImageメソッドのリファレンスであり,Control.Paintイベントのリファレンスではありません。
そして,サンプルの上には
次の例は、Windows フォームでの使用を意図してデザインされており、Paint イベント ハンドラーのパラメーターである PaintEventArgse が必要です。
と書いてあります。
どこにも,「Paint イベント ハンドラーとして登録します」とは書いてありません。
素直にリファレンスを読むならば,このサンプルはPaintイベントのハンドラーのパラメーターが必要なのだから,そのハンドラーから呼ばれて使うものです。
実際,コードの作りもそのようになっています。

閉鎖

“C言語何でも質問掲示板” へ戻る