Как сделать drawLine более плавным? - PullRequest
5 голосов
/ 06 апреля 2011

Я использую следующий код для рисования линии:

Graphics g = this.CreateGraphics();
Pen p = new Pen(Color.Black,3);
g.DrawLine(p,...);
// ...

Почему прямая линия зигзагообразная, а не прямая и не ровная вообще. Как я могу сделать это прямо и гладко?

Ответы [ 2 ]

9 голосов
/ 06 апреля 2011

Переопределите метод OnPaint () вашей формы или реализуйте событие Paint элемента управления.Используйте переданный объект e.Graphics для рисования. Будет правильно инициализировано рисование сглаженных линий .И может быть двойной буферизацией, чтобы она не мерцала.Вызовите Invalidate (), чтобы вызвать перерисовку.

Использование Control.CreateGraphics () неверно в 99,9% всех случаев.Все, что вы рисуете, не может сохраняться.Он исчезнет, ​​когда вы свернете окно и восстановите его.Или когда вы частично убираете его с экрана и обратно.Или когда вы перекрываете другое окно в вашем XP и на любой машине, на которой не включен Aero.CreateGraphics () подходит только для анимации с частотой кадров, превышающей ~ 20 кадров в секунду.

9 голосов
/ 06 апреля 2011

Вам необходимо включить сглаживание.Установите Graphics.SmoothingMode на AntiAlias, как описано здесь: http://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode.aspx

...