Форум: "Основная";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
ВнизКак убрать мерцание? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c