TPaintBox

0

Cześć;

Pisze mały programik i mam na foremce PaintBox'a, na paintboxie rysuje punkty, linie, okręgi ... , dane o tych elementach mam w tablicy. Rysowania dokonuje w odpowiedzi na zdarzenie OnPaint dla PaintBox'a. Chcę zrobić funkcje do przesuwania zawartości paintbox'a za pomocą myszki, tak aby po kliknięciu na paintboxie obraz nijako przyczepił się do kursora i razem z nim poruszał się aż do ponownego kliknięcia. Problem polega na tym że jeżeli w zdarzeniu OnMouseMove obliczam nowe parametry do wyświetlenia i wykonuje procedurę Rysuj; to efekt jest taki że obraz mi miga przy ruszaniu myszką : ( Wiem że jest to wywołane tym , że po każdym najmniejszym ruchu myszą programowi zabiera trochę czasu na przerysowanie (am I rigth ?) lecz czy nie dało by się tego w jakiś sposób uniknąć ?

z góry dziękuje za pomoc

pozdrawiam

0

Form1.DoubleBuffered:=True

0

a jak to nie pomaga ?

0

Nie maluj bezpośrednio na PaintBoxie tylko na Bitmapie w pamięci, jak juz zakończysz na niej rysować wyświetl zawartość na PaintBoxie używająć CopyRect, noo mniej więcej tak :)

procedure TForm1.Rysuj;
var
Bmp: TBitmap;
begin
Bmp:=TBitmap.Create;
Bmp.Width:=PaintBox1.Width;
Bmp.Height:=PaintBox1.Height;
with Bmp.Canvas do
begin
.....
end;
PaintBox1.Canvas.CopyRect(Rect(0,0,Bmp.Width,Bmp.Height),Bmp.Canvas,Rect(0,0,Bmp.Width,Bmp.Height));
Bmp.Free;
end;

0

no dalej mi miga : ( a wiem ze w programach CAD nie miga jak sie przesuwa, no to jak to jest zrobione ?

0

a nie przepraszam nie miga zapomniałem wyrzucić jednej linijki :)

BARDZO DZIĘKUJE Sheitar

1 użytkowników online, w tym zalogowanych: 0, gości: 1