Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.10;
Скачать: CL | DM;

Вниз

Как убрать мерцание?   Найти похожие ветки 

 
Lexa   (2003-03-28 23:47) [0]

Под скажите как убрать мерцание на Image.Я хочу вывести фигуру которая вращается.Вот пример кода.

procedure TMainForm.Timer1Timer(Sender: TObject);
begin
Move(T, -AFigure2[1,1], -AFigure2[1,2], -AFigure2[1,3]) ;
MulMatrix(AFigure2, KTop, T, TMP);
ClearCanvas(Image4);
RotateOx(Rx, T);
Mulmatrix(TMP, KTop, T, TMP);
RotateOy(Ry, T);
Mulmatrix(TMP, KTop, T, TMP);
RotateOz(Rz, T);
Mulmatrix(TMP, KTop, T, TMP);
Move(T, AFigure2[1,1], AFigure2[1,2], AFigure2[1,3]) ;
Mulmatrix(TMP, KTop, T, TMP);
ConstructionFigure(Image4.Height div 2-60, Image4.Width div 2, Image4);
if CheckBox1.Checked then inc(Rx);
if CheckBox2.Checked then inc(Ry);
if CheckBox3.Checked then inc(Rz);
end;

В паскале для этого можно было менять видеостраницы а как это сделать в Delphi.


 
multik ©   (2003-03-29 00:04) [1]

Я не знаю поможет тебе это, но вот статья, которую где-то нашлёл.
>>>
Как сделать анимацию немерцающей

Мерцание возникает, когда цвет точки меняется два раза подряд. Например, правильнее объект при его перемещении стирать и затем рисовать на новом месте не на экране, а в памяти, и выводить на форму уже готовое изображение поверх предыдущего. В таком случае смена цветов на экране происходит только один раз.

var
bm: TBitMap;

procedure TForm1.FormCreate(Sender: TObject);
begin
bm := TBitMap.Create;
bm.Width := Form1.ClientWidth;
bm.Height := Form1.ClientHeight;
with bm.Canvas do begin
Font.Name := "Arial";
Font.Size := 50;
Font.Color := clBlue;
end;
Timer1.Interval := 100;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
s: String;
Hour, Min, Sec, MSec: Word;

begin
DecodeTime(Time, Hour, Min, Sec, MSec);
with bm.Canvas do begin
Brush.Style := bsSolid;
Brush.Color := clWhite;
FillRect(ClipRect);
s := TimeToStr(Time);
TextOut((bm.Width - TextWidth(s)) div 2,
(bm.Height - TextHeight(s)) div 2, s);
Pen.Mode := pmMask;
Pen.Width := 20;
Pen.Color := clLime;
Brush.Style := bsClear;
Rectangle(bm.Width div 2 - (MSec * bm.Width) div 5000,
bm.Height div 2 - (MSec * bm.Height) div 5000,
bm.Width div 2 + (MSec * bm.Width) div 5000,
bm.Height div 2 + (MSec * bm.Height) div 5000);
end;
Form1.Canvas.Draw(0, 0, bm);
end;




Страницы: 1 вся ветка

Текущий архив: 2003.04.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
1-30350
Intell
2003-03-31 16:00
2003.04.10
Как в PopupMenu добавить ProgressBar?


3-30214
Basic
2003-03-23 01:08
2003.04.10
Как програмно поменять ограничитель SET TERM


14-30583
Supreme 2
2003-03-24 20:03
2003.04.10
Конструктор LEGO на компьютере


1-30445
alex_bredin
2003-03-31 09:58
2003.04.10
Перенос проекта c Win2000 под WinXP


1-30363
esa
2003-04-01 06:23
2003.04.10
Как скопировать папку