2014-02-19 2 views
-2

IDE: Microsoft Visual Studio 2010 Платформа: C# .NetВызов события краски внутри функции

Я пытаюсь вызвать событие краски внутри функции в одном из моих форм в C#. В настоящее время функция имеет два целых аргумента, но я хочу, чтобы в этой функции вызывалось событие рисования панели, но я получаю сообщение об ошибке при вызове события рисования. Какие-либо предложения ?

+0

Какая ошибка? Мы не волшебники! –

+0

Ошибка - это имя отправителя, e не существует ... – Harsh

+0

Дайте скриншоты и образцы кода. –

ответ

3

Вы должны сохранить координаты в поле или списке, что имеет смысл для вашего дела.

И затем Invalidate Panel, это поднимет событие Paint, в котором вы сможете нарисовать свою линию из сохраненных координат.

Это единственный способ получить то, что вы, скорее всего, захотите, без особых проблем, потому что рисование в окно (панель) нестандартным способом - непростая задача.

[EDIT] Также: Не забывайте, что вы должны перерисовать всю «сцену» на этой панели каждый раз, когда событие Paint поднято, даже если вы используете Bitmap (backbuffer) в качестве резервной копии, вам нужно blit this Bitmap на Panel снова.

[EDIT] Пример:

private readonly Stack<Point> _points = new Stack<Point>(); 
    private readonly Pen _blackPen = new Pen(Color.Black); 

    private void Form1_Paint(object sender, PaintEventArgs e) 
    { 
     var points = _points.ToArray(); 
     for (int i = 1; i < points.Length; i++) 
     { 
      e.Graphics.DrawLine(_blackPen, points[i - 1], points[i]); 
     } 
    } 
    private void Form1_MouseDown(object sender, MouseEventArgs e) 
    { 
     _points.Push(e.Location); 
     Invalidate(); 
    } 
+0

Можете ли вы предоставить несколько примеров кода, которые помогут мне лучше понять ... Спасибо – Harsh

+0

Спасибо большое ... Это полезно ... – Harsh

2

Получение обработчик события Paint для запуска только требует рассказывающие Winforms, которые должны быть перекрашены панель:

panel1.Invalidate(); 

Вы также можете использовать Refresh(), который вызывает событие Paint сразу, а не позволяет Windows сортировать лучшее время для создания события. Именно тогда не нужно делать ничего более неотложного, например, отвечать на ввод пользователя или отправлять сообщения, которые отправляются вместо отправленных сообщений. Не то, что вы должны когда-либо учитывать, хотя это ленточная помощь для использования нити.

Смежные вопросы