![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с TLabel [D7, XP]
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;