36 / 36 / 6
Регистрация: 20.03.2011
Сообщений: 331
1

Бегущая строка моргает (label)

07.02.2012, 13:34. Показов 3912. Ответов 7
Метки нет (Все метки)

Хочу сделать бегущую строку.
Создаю таймер. И по таймеру двигаю текст в label.
Проблема в том что если в label размер букв очень большой то при перемещении он начинает моргать.
Подскажите как от этого избавиться. Может можно это как нибудь по другому реализовать?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2012, 13:34
Ответы с готовыми решениями:

бегущая строка
Помогите пожалуйста что нужно прописать в кнопке чтобы при ее нажатии бегущая строка меняла свой...

Бегущая строка
Как сделать бегущую строку без мерцания с Canvas и чтобы резало примерно так: Бегущая строка ...

Бегущая строка
Бегущая строка Программа читает записанный в файле текст и выводит его в виде бегущей строки,...

Уменьшающаяся бегущая строка
Уважаемые софорумчане, мои знания в программирование не очень сильны, но что то в начальной стадии...

7
Практикантроп
4741 / 2647 / 512
Регистрация: 23.09.2011
Сообщений: 5,678
07.02.2012, 13:39 2
- тонкостей не знаю, но иногда от двойной прорисовки уходят, изменив свойство компонента DoubleBuffering с false на true
1
36 / 36 / 6
Регистрация: 20.03.2011
Сообщений: 331
07.02.2012, 13:41  [ТС] 3
Увы, все равно моргает(
0
Практикантроп
4741 / 2647 / 512
Регистрация: 23.09.2011
Сообщений: 5,678
07.02.2012, 13:42 4
- а кому это свойство меняли?
0
36 / 36 / 6
Регистрация: 20.03.2011
Сообщений: 331
07.02.2012, 13:50  [ТС] 5
- а кому это свойство меняли?
Перепутал . Попробовал поместить Label на TPanel безрезультатно.
Единственная идея которая пришла в голову создать очень большого размера форму и двигать ее. Но не хотелось бы так делать!
0
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
07.02.2012, 14:03 6
Тоже ставил перед собой подобную задачу.
Суть и отличия:
Текст выводился в PaintBox
Размер текста был не большой - 12
Текст ужасно моргал(Timer Interval установлен в 1)

Решил так:
Изначально прорисовка происходила в OnTimer
Перенес код вывода в PaintBox::Repaint()
а обработчик OnTimer принял следующий вид:
C++
1
2
3
4
void __fastcall TMainForm::TimerVisualizeTimer(TObject *Sender)
{
PaintBox1->Repaint();
}
И никаких мерцаний!
2
Эксперт С++
3949 / 1804 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
07.02.2012, 14:18 7
nikitapel, вы основной форме назначьте DoubleBuffered.

Проверьте сами. Создайте новый проект, на форму забросьте компоненты классов TLabel и TTimer.
Размер шрифта установите побольше (например, 60). Интервал таймера установите равным 10 мс. И в обработчике OnTimer задайте траекторию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  static LeftDirection = true;
  if (LeftDirection) {
    Label1->Left -= 2;
    if (Label1->Left <= 0) {
      LeftDirection = false;
    }
  } else {
    Label1->Left += 2;
    if (Label1->Left + Label1->Width > this->ClientWidth) {
      LeftDirection = true;
    }
  }
}
Откомпилируйте и запустите приложение. Вы увидите, что текст периодически моргает.
А теперь установите DoubleBuffered (для Form1) в true.
3
36 / 36 / 6
Регистрация: 20.03.2011
Сообщений: 331
07.02.2012, 14:20  [ТС] 8
MikeSoft спасибо большое! Очень Очень благодарен!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2012, 14:20
Помогаю со студенческими работами здесь

Не правильная бегущая строка
Здравствуйте Уважаемые товарищи программисты! Помогите разобраться с такой проблемой. Сделал...

Бегущая строка. Нужно выполнить в форме (Form), с кнопками и т.п
40. Бегущая строка Программа читает записанный в файле текст и выводит его в виде бегущей строки,...

Бегущая строка
Привет, подскажите, кто может, как в C++ (на самом деле надо на Perl, но д.б. очень похоже) можно...

Бегущая строка в Label
Добавлено через 3 минуты Добиваюсь того что бы при нажатии на кнопку таймер производил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru