0

私はこのコードを書きましたが、機能しません。これが機能しないだけでなく、私が描画しようとした方法もどれも機能しませんでした。私はこれを解決するために1、2時間以上費やしましたが、成功しませんでした。小さな線を表示するだけの簡単なプログラムを試しましたが、何をしても機能しません:c

私は何を間違っているのですか、または何がこれを引き起こす可能性がありますか?

private void pictureBox1_MouseDown(object sender, 
                                   MouseEventArgs m, 
                                   EventArgs e, 
                                   PaintEventArgs q)
{
    if (m.Button == System.Windows.Forms.MouseButtons.Left)
    {
        Point currpoint = System.Windows.Forms.Cursor.Position;

        Point origin = new Point(0, 0);

        decimal sizee = nud.Value;

        int size = Convert.ToInt32(sizee);

        Random randonGen = new Random();

        Color randomColor = Color.FromArgb(randonGen.Next(255),
                                           randonGen.Next(255),
                                           randonGen.Next(255));

        Pen selPen = new Pen(randomColor, size);

        Graphics g = Graphics.FromImage(pictureBox1.Image);

        g.DrawLine(selPen, 3, 3, 133, 133);
    }
}
4

4 に答える 4

4

を追加してみてください

pictureBox1.Invalidate();

電話。

于 2012-06-18T22:32:30.260 に答える
1

これは、ピクチャ ボックスに描画する正しい方法ではありません。

private void pictureBox1_MouseDown(object sender, 
                                   MouseEventArgs m, 
                                   EventArgs e, 
                                   PaintEventArgs q)
{
    if (m.Button == System.Windows.Forms.MouseButtons.Left)
    {
        Point currpoint = System.Windows.Forms.Cursor.Position;

        Point origin = new Point(0, 0);

        decimal sizee = nud.Value;

        int size = Convert.ToInt32(sizee);

        Random randonGen = new Random();

        Color randomColor = Color.FromArgb(randonGen.Next(255),
                                           randonGen.Next(255),
                                           randonGen.Next(255));

        Pen selPen = new Pen(randomColor, size);

        using(Graphics g = pictureBox1.CreateGraphics()) // Use the CreateGraphics method to create a graphic and draw on the picture box. Use using in order to free the graphics resources.
        {
             g.DrawLine(selPen, 3, 3, 133, 133);
        }
    }
}

ところで、このメソッドは、コントロールが無効になったときにリセットされる一時的なイメージを作成します。永続的な描画を行うには、ピクチャ ボックスの Paint イベントをリッスンして、そこにグラフィックを描画する必要があります。

于 2012-06-18T22:32:55.463 に答える
0

最初に画像から描画する必要があります。それをに取り付けますpictureBox1

Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics g = Graphics.FromImage(canvas);

Point currpoint = System.Windows.Forms.Cursor.Position;

Point origin = new Point(0, 0);

decimal sizee = nud.Value;

int size = Convert.ToInt32(sizee);

Random randonGen = new Random();

Color randomColor = Color.FromArgb(randonGen.Next(255),
                                   randonGen.Next(255),
                                   randonGen.Next(255));

Pen selPen = new Pen(randomColor, size);

g.DrawLine(selPen, 3, 3, 133, 133);
pictureBox1.image = canvas;
于 2014-08-18T10:41:56.127 に答える