Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с TLabel [D7, XP]


Страницы:   1 2 3

hypnotize ©   (2007-01-18 17:02:00) 

Всем здраствуйте, проблема такая, сделал я ефект появления текста, аля матрица, то биш текст будто печатается, нарастает по одной букве, для сего эфекта использовал я TLabel и TTimer с интервалом 10, вроде как все работает, но сам лейбл во время появления текста моргает, как избавитсяот этого?


default   (2007-01-19 22:22:00) [1]

Удалено модератором
Примечание: 3 дня RО


default   (2007-01-19 22:11:00) [2]

Удалено модератором


default   (2007-01-19 22:10:00) [3]

Удалено модератором


Комбинатор   (2007-01-19 15:19:00) [4]

)


hypnotize   (2007-01-19 15:17:00) [5]

выяснилось что все моргало потому что лейбл и пайнт бокс был сверху на Image, теперь норм )


hypnotize   (2007-01-19 15:15:00) [6]

стоп! теперь пейнт бокс моргает :))))))) может дело ваобще в моейм компе? или текст длинный? 1500 символов, doublebuffered := true;не помогает


hypnotize   (2007-01-19 15:15:00) [7]

стоп! теперь пейнт бокс моргает :))))))) может дело ваобще в моейм компе? или текст длинный? 1500 символов, doublebuffered := true;не помогает


hypnotize   (2007-01-19 15:14:00) [8]

все, нашел, всем спасибо, проблема разрешена :)


hypnotize   (2007-01-19 15:12:00) [9]

Такс все ок, токо текст выравнивается по центру, можно сие убрать?


Комбинатор   (2007-01-19 15:09:00) [10]


> Где-то пропустил ";" :(

не обязательно


Alarm   (2007-01-19 15:05:00) [11]

Где-то пропустил " ;" :(


Комбинатор   (2007-01-19 15:03:00) [12]

риведи код, который получился


hypnotize   (2007-01-19 15:00:00) [13]

2Комбинатор
[Error] Unit1.pas(105): Missing operator or semicolon


Комбинатор   (2007-01-19 14:58:00) [14]

передавай TRect через ссылку:
Rect1 = Rect(0,0,MyLabel.Width,MyLabel .Height)
а уж потом
DrawText(BackBuf.Canvas.Handle,PChar(S),Length(S),Rect1,DT_CENTER or DT_VCENTER or DT_WORDBREAK or DT_NOPREFIX);


hypnotize   (2007-01-19 14:33:00) [15]

это в точке DT_CENTER


hypnotize   (2007-01-19 14:32:00) [16]

Дельфя жалуется на код: [Error] Unit1.pas(104): Constant object cannot be passed as var parameter


TRUNK   (2007-01-19 14:26:00) [17]


> какими символами выделяется начало новой строчки


Вообщето этими символами строка заканчивается, ну да ладно...
Последовательность #13#10 (#13 - "возврат каретки", #10 - "перевод строки")


> токо рисует все в одну строчку


Замени


BackBuf.Canvas.TextOut(0,0,S);


на


DrawText(BackBuf.Canvas.Handle,PChar(S),Length(S),Rect(0,0,MyLabel.Width,MyLabel .Height),DT_CENTER or DT_VCENTER or DT_WORDBREAK or DT_NOPREFIX);


hypnotize   (2007-01-19 13:59:00) [18]

Вопрос: какими символами выделяется начало новой строчки? На картинке рисует как \x7F\x7F, но pos два квадратика не воспринимает :)


hypnotize   (2007-01-19 13:44:00) [19]

2Kolan
То что ты написал все равно моргает!

2Комбинатор
неосилил :( я же все таки еще новичок...

2TRUNK
Во, твой вариант хорош, токо рисует все в одну строчку :) Пытаюсь исправить.


TRUNK   (2007-01-19 12:41:00) [20]

Вот пример простой двойной буфферизации:


MyLabel: TPaintBox;
BackBuf: TBitmap;

procedure FormCreate(Sender: TObject);
begin
//.............
BackBuf := TBitmap.Create;
BackBuf.Width := MyLabel.Width;
BackBuf.Height := MyLabel.Height;
BackBuf.PixelFormat := pf24bit;
//.............
end;

procedure FormDestroy(Sender: TObject);
begin
//.............
BackBuf.Free;
//.............
end;

procedure SetLabelText(S: string);
begin
BackBuf.Canvas.TextOut(0,0,S);
MyLabel.Repaint;
end;

procedure MyLabelPaint(Sender: TObject); // MyLabel.OnPaint
begin
BitBlt(MyLabel.Canvas.Handle,0,0,MyLabel.Width,MyLabel.Height,
       BackBuf.Canvas.Handle,0,0,SRCCOPY);
end;


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо