Hallo,
in einen "Designer"-Programm muss ich einen Hintergrund sowie mehrere Linien und Bitmaps zeichnen, die mit der Maus bewegt werden können.
Nach vielen Versuchen bin ich nun zu einer Paintbox gekommen, in deren OnPaint nur
Delphi-Quellcode:
BitBlt(Paintbox1.Canvas.Handle, 0, 0, offscreenbitmap.Width, offscreenbitmap.Height, offscreenbitmap.Canvas.Handle, 0,
0, SRCCOPY);
steht.
Das ganze Zeichnen passiert in die offscreenbitmap beim Mousemove (hier testweise nur ein bildfüllendes Hintergrundbild, eine Linie und eine kleine Bitmap:
Delphi-Quellcode:
//die Offscreenbitmap ist global vorhanden
if ssLeft in Shift then
begin
lx := X;
ly := Y;
// Offscreen Bitmap bemalen
r.Width := Paintbox1.Width;
r.Height := Paintbox1.Height;
//das Hintergrundbild
offscreenbitmap.Canvas.StretchDraw(r, fbitmap1);
//eine Linie
offscreenbitmap.Canvas.MoveTo(0, Mouse.y);
offscreenbitmap.Canvas.LineTo(Paintbox1.Width, Mouse.y);
r.Left := Mouse.x;
r.Top := Mouse.y;
r.Width := 150;
r.Height := 100;
//das kleine Bitmap
offscreenbitmap.Canvas.StretchDraw(r, fbitmap2);
Paintbox1.Invalidate;
end;
Das Ganze funktioniert zwar, flackert aber trotzdem entsetzlich, doublebuffered ist auf true gesetzt.
Ich vermute es liegt an der Größe (bildschirmfüllend) des Offscreenbitmaps, wie bekomme ich das Flackern weg???
Ciao
Stefan