![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с Canvas [D5]
Mr_Hunter © (2002-05-30 15:54:00)Господа мастера! Помогите решить вот какую проблему.
На Canvase нарисована (к примеру) окружность. На OnMouseMove повешен обработчик: при движении мыши перемешать окружность в то место где в тек момент находиться мышь. Но при перерисовке идет мерцание! Вопрос можно ли от него избавиться и как!! Хорошо бы работающий пример!
Заранее спасибо.
int64 (2002-05-30 17:51:00) [1]Надо виртуальный битмап юзать. Вот набросал.
var
Form1: TForm1;
Bitmap: TBitmap;
R: TRect;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
R:= Rect(10, 10, 50, 50);
Bitmap:= TBitmap.Create;
Bitmap.Height:= Height;
Bitmap.Width:= Width;
Bitmap.Canvas.Brush.Color:= Color;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Bitmap.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
const incr = 5;
var TempRect: TRect;
begin
TempRect:= R;
R:= Rect(R.Left+incr, R.Top, R.Right+incr, R.Bottom);
UnionRect(TempRect, TempRect, R);
Bitmap.Canvas.FillRect(TempRect);
Bitmap.Canvas.Ellipse(R);
Canvas.CopyRect(TempRect, Bitmap.Canvas, TempRect);
end;
Дерзай.
MaximatorVeter (2002-05-30 16:11:00) [2]Как мне кажется в этом случаи всегда будет заметно мигание.
А вот если использовать API DirectX, то точно мигать не будет.
AlexanderSK (2002-05-30 16:01:00) [3]Расскажи конкретнее как ты ее перерисовываеш?
Song (2002-05-30 15:59:00) [4]А как рисуете окружность?