Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с 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]

А как рисуете окружность?


Наверх

Титульная страница Поиск, карта сайта Написать письмо