![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DelphiX Бегушая строка [D5, D6, D7, Win2k, WinXP]
elected © (2004-11-24 08:11:00)Мастера
помогите с исходником бегущей сроки на DelphiX
просто с помошью обычных компонет не устраевает скорость
нужна плавная (сдвиг 1 пиксель)
Я так понимаю это всего 2 строчек кода
Но вот ну незнаю я DelphiX
elected (2004-11-27 10:42:00) [1]не не катит в отдельном потоке пробывал
че только я не делал и в потоке, и системный таймет создавал в место обычного
у меня много другой графики все равно не канает
Дмитрий Ботвин (2004-11-26 14:43:00) [2]Так ты бегущую строку в отдельном потоке отрисовывай, тогда и тормозить ничё не будет. У меня этот вариант 100-пудово работает.
elected (2004-11-26 07:55:00) [3]Это все понятно =-)
но дело в том что кросе бегущей строки на форме много изменяющейся графики и бегущая строка сделанная по методу Дмитрий Ботвин тормозит
к тому же скорости ее не достаточно даже если таймер поставить на 1 миллисекунду так как для плавности сдвиг нужен 1 пиксель
вобщем нужен пример для DelphiX или хотя бы намек как создать объект и двигать его
Еще важным параметром является загрузка процессора
обычным методом такая бегущая строка съедает много ресурсов.
Дмитрий Ботвин (2004-11-25 14:53:00) [4]Делай в виде графики бегущую стоку тогда
будет плавное перемещение. Я делал так:
//Отрисовка бегущей строки
procedure TForm2.DrawCanvas;
begin
BitMap := TBitmap.Create;
Bitmap.Width := Image2.Width;
Bitmap.Height := Image2.Height;
Bitmap.Canvas.Brush.Color := clBlack;
Bitmap.Canvas.Font.Name := 'Times New Roman';
Bitmap.Canvas.Font.Size := 25;
Bitmap.Canvas.Font.Color := clYellow;
TW := Bitmap.Canvas.TextWidth(txt);
X := Image2.Width;
end;
//Бегущая строка по таймеру
procedure TForm2.Timer2Timer(Sender: TObject);
begin
Bitmap.Width := Image2.Width;
Bitmap.Height := Image2.Height;
Bitmap.Canvas.Polygon([Point(0,0), Point(Image2.Width,0), Point(Image2.Width,Image2.Height), Point(0,Image2.Height)]);
X := X - 3;
if X <= -TW then X := Image2.Width;
Bitmap.Canvas.TextOut(X,0,Txt);
Image2.Canvas.Draw(0,0,Bitmap);
end;