DrawLine не появляется - PullRequest
       0

DrawLine не появляется

0 голосов
/ 02 февраля 2019

Я пытаюсь нарисовать вертикальную линию, когда мышь перемещается по панели:

private void panel1_MouseMove(object sender, MouseEventArgs e)
{
    Panel panel = sender as Panel;
    if (panel != null)
    {
        using (Graphics g = panel.CreateGraphics())
        {
            using (Pen pen = new Pen(Color.Red))
            {
                g.DrawLine(pen, e.X, 0, e.X, panel.Height);
            }
        }
        panel.Invalidate(true);
    }
}

Но ничего не рисуется.

Что я делаю не так?

1 Ответ

0 голосов
/ 02 февраля 2019

Все рисование GDI должно выполняться внутри события .Paint() с использованием объекта Graphics, который предоставляется внутри аргумента PaintEventArgs.Используйте .MouseMove(), чтобы сохранить значения мыши и вызвать событие рисования.

Попробуйте это:

public partial class Form1 : Form
{
    Point mouse;
    MouseButtons buttons;

    public Form1()
    {
        InitializeComponent();
    }

    private void panel1_Paint(object sender, PaintEventArgs e)
    {
        if (sender is Panel panel)
        {
            var g = e.Graphics;
            g.DrawLine(Pens.Red, mouse.X, 0, mouse.X, panel.Height);
        }
    }

    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {
        mouse=e.Location;
        buttons=e.Button;

        panel1.Refresh();
    }
}

Вот результат:

scr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...