Как добиться плавного рисования с помощью C # (например, Paint .NET)? - PullRequest
4 голосов
/ 07 февраля 2012

Как Paint .NET может рисовать так быстро, используя C #? Пример: периметр эллипса рисуется, когда мышь перетаскивают без видимой задержки. В простом приложении формы Windows в C # Если вы используете событие MouseMove в Picturebox и рисуете эллипс, основанный на положении мыши, будет много задержки и мерцания! Итак, как они делают это так гладко?

Ответы [ 4 ]

4 голосов
/ 22 марта 2012

Paint.NET вызывает Update () после вызова Invalidate (), что вызывает немедленный синхронный WM_PAINT.

4 голосов
/ 07 февраля 2012

У меня нет специальных знаний о коде Paint.Net, но, скорее всего, он использует Двойную буферизацию , и, вероятно, реализован вручную на пользовательской поверхности рисования, а не упрощенной реализацией в предварительно упакованных элементах управления. .

2 голосов
/ 07 февраля 2012

Чтобы получить плавное рисование, вам необходимо:

В этом случае лучше всего использовать Double Buffering - он поддерживается «из коробки» в .NET framework, требует очень мало работы и устраняет мерцание.

0 голосов
/ 15 февраля 2012

Они, вероятно, используют WPF.Это намного быстрее, чем формы.

...