|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Мерцание при прорисовке
Делаю я граф. редактор
делаю линию... и все бы хорошо, но поверх некоторых изображений рисую линию - все начинает мерцать Код:
var Form1: TForm1; mode: TMode; down: Boolean; b: TBitmap; DownX,DownY: Integer; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin down:=true; b:=TBitmap.Create; b.Width:=Image1.Width; b.Height:=Image1.Height; b.Canvas.Draw(0,0,Image1.Picture.Graphic); DownX:=x; DownY:=y; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var b2: TBitmap; begin If (mode=line) and down then begin b2:=TBitmap.Create; b2.Width:=b.Width; b2.Height:=b.Height; b2.Canvas.Draw(0,0,b); b2.Canvas.MoveTo(DownX,DownY); LineTo(b2.Canvas.Handle,x,y); BitBlt(Image1.Canvas.Handle,0,0,b2.Width,b2.Height,b2.Canvas.Handle,0,0,SrcCopy); Image1.Repaint; b2.Free; end; end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin down:=false; BitBlt(Image1.Canvas.Handle,0,0,b.Width,b.Height,b.Canvas.Handle,0,0,SrcCopy); Image1.Refresh; b.Free; end; |
#2
|
||||
|
||||
А вы включали DoubleBuffered для формы?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
спасибо, я такого и не знал)))
|