Прокрутка текста стала настоящей болью ..?

#c# #drawing #scroll

#c# #рисование #прокрутка

Вопрос:

Привет, я работаю на c # 2005 с приложением прокрутки.Сначала я использую некоторые из этих

http://www.codeproject.com/KB/miscctrl/csmarquee.aspx

http://www.codeproject.com/KB/miscctrl/ScrollingTextControlArtic.aspx

но все они не могут мне сильно помочь.Мое приложение содержит 7 таймеров.Во время его запуска панель прокрутки выглядит такой раздражающей (читай, совсем не гладкой). итак, я, наконец, попробовал с простой панелью, меткой и таймером, это тоже не работает (я имею в виду, не гладко).

Может ли быть какой-либо другой способ, а не использовать таймер для прокрутки текста.

Комментарии:

1. Классическая проблема заключается в использовании быстрого таймера и прокрутке только на один пиксель. Это создает артефакт, называемый «разрыв», выглядит как мерцающие пиксели. Не могу исправить это без аппаратной помощи, обновляя только во время интервала вертикального гашения. Замедлите таймер, прокрутите более чем на один пиксель.

2. 7 таймеров довольно необычно. Не могу представить, чтобы когда-либо было более двух или около того в одной форме.

3. @ Hans Passant спасибо за то, что поделился этой информацией.:

Ответ №1:

Трудно сказать, что не так с вашей прокруткой без какого-либо кода, но вы получите гораздо более быструю прокрутку, используя двойную буферизацию. Подробнее читайте здесь: https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.control.doublebuffered

Но есть ограничение, сколько «анимации» вы можете сделать с Windows forms и сделать ее гладкой. Использование DirectX или Silverlight будет лучше для графики.

Комментарии:

1. спасибо за ссылку answer.ur было реальной сделкой.

Ответ №2:

Использование таймера для управления скоростью прокрутки должно быть в порядке. Похоже, вы, возможно, не используете двойную буферизацию своих элементов управления, что является обычной причиной отрывистой анимации. См. Эту статью, среди многих, об использовании двойной буферизации для элементов управления.

Но сначала просто попробуйте установить для свойства DoubleBuffered значение true в вашей форме. Только этот параметр может исправить вашу анимацию.

Комментарии:

1. спасибо за предоставление концепции «двойной буферизации». давайте посмотрим, смогу ли я добиться какого-либо прогресса в этом.