0
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        NumberOfBets++;

        if ((e.X >= 40 && e.X <= 125) && (e.Y >= 0 && e.Y <= 26))
        {
            bettingStatus[0]++;
            for (int x; x < 10; x++)
            {
                Graphics graphic = (???)
            }
        }

この MouseDown メソッドで画像を描画しようとしています。「(???)」の部分に何が入っているのかわかりません。

4

2 に答える 2

1
// Create a Graphics object for the pictureBox1 control.
Graphics g = pictureBox1.CreateGraphics();

続きを読む: MSDN: グラフィック クラス

Paint イベントで描画する必要があります。そうしないと、コントロールが再描画されたときに描画が失われるためです。Paint イベント ハンドラーに渡される PaintEventArgs には、描画できる Graphics (System.Drawing.Graphics 型) という名前のプロパティがあります。

于 2009-05-03T04:59:25.540 に答える
0

Graphicsおそらくあなたの場合、どこかから取得する必要がありpictureBox1ます:

Graphics graphic = pictureBox1.CreateGraphics();

...しかし、本当にMouseDownイベント ハンドラーで描画しますか? 一部が再描画されても、再描画されません。おそらく、すべての描画をイベント ハンドラーで行い、代わりにPaintフラグを設定する方がよいでしょう。MouseDown次に、再描画する領域を無効にして、新しい画像を描画します。

または、画像がより静的になる場合は、 を作成しBitmap、その上に描画してから、 のを代わりにを指すように設定できImageます。例えば:PictureBoxBitmap

Bitmap bmp = new Bitmap(200, 100);
Graphics graphics = Graphics.FromImage(bmp);
//do drawing here
pictureBox1.Image = bmp;
于 2009-05-03T04:55:10.213 に答える