Нарисуйте линии на картинке, используя щелчки мыши в C # - PullRequest
1 голос
/ 15 ноября 2010

Я пытаюсь создать программу, которая будет рисовать линии над картинкой , используя щелчки мышью для мест, из которых и где должна быть проведена линия. Это мой текущий код:

public partial class Form1 : Form
{
    int Drawshape;

    private Point p1, p2;
    List<Point> p1List = new List<Point>();
    List<Point> p2List = new List<Point>();

    public Form1()
    {
        InitializeComponent();
        pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Drawshape = 1;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Drawshape = 2;
    }

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        if (Drawshape == 1)
        {
            if (p1.X == 0)
            {
                p1.X = e.X;
                p1.Y = e.Y;
            }
            else
            {
                p2.X = e.X;
                p2.Y = e.Y;

                p1List.Add(p1);
                p2List.Add(p2);

                Invalidate();
                p1.X = 0;
            }
        }
    }

    private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
        Graphics G = Graphics.FromImage(pictureBox1.Image);
        if (Drawshape == 1)
        {
            using (var p = new Pen(Color.Blue, 4))
            {
                for (int x = 0; x < p1List.Count; x++)
                {
                    G.DrawLine(p, p1List[x], p2List[x]);
                }
            }
        }
    }

На данный момент это вообще не позволяет рисовать на картинке. Как это возможно?

Ответы [ 2 ]

5 голосов
/ 15 ноября 2010

Изменить Invalidate(); на pictureBox1.Invalidate();

0 голосов
/ 15 ноября 2010

Вам необходимо нарисовать каждую линию на объекте Image (используя Graphics.FromImage) после создания линии.

Вам также необходимо разместить объект Graphics в блоке using.

...