![]() |
Bitmap scrollen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe eine ScrollBox auf der eine PaintBox liegt. Die TBitmap PaintBitmap enthält das Bild. Die PaintBox ist immer so groß wie PaintBitmap. Wenn ich dann scrolle entstehen "Schlieren". Warum?
Code:
WM_ERASEBKGND und DoubleBuffered habe ich schon probiert, ohne Erfolg.
procedure TMainForm.PaintBox1Paint(Sender: TObject);
var re: TRect; begin with PaintBox1 do begin re:=Canvas.ClipRect; BitBlt(Canvas.Handle, re.Left, re.Top, re.Right-re.Left, re.Bottom-re.Top, PaintBitmap.Canvas.Handle, re.Left, re.Top, SRCCOPY); end; end; Danke und beste Grüße |
AW: Bitmap scrollen
Wie ist es denn so?
Delphi-Quellcode:
procedure TForm2.PaintBox1Paint(Sender: TObject);
var re: TRect; begin with PaintBox1 do begin Canvas.Brush.Color := clBlack; Canvas.FillRect(PaintBox1.ClientRect); re:=Canvas.ClipRect; BitBlt(Canvas.Handle, re.Left, re.Top, re.Right-re.Left, re.Bottom-re.Top, PaintBitmap.Canvas.Handle, re.Left, re.Top, SRCCOPY); end; end; |
AW: Bitmap scrollen
Zitat:
|
AW: Bitmap scrollen
Zitat:
|
AW: Bitmap scrollen
Kommt drauf an was du willst?
* links den Teil mit Hintergrundfarbe übermalen, nachdem das Bild verschoben wurde * oder das ganze Bild nicht auf der Oberfläche verschieben, sondern den neuen Ausschnitt von wo anders her holen und neu zeichnen. (z.B. ein TBitmap im Hintergrund) Es ist eh eine blöde Idee auf einem flüchtigen Canvas rumzuhantieren und die Daten von dort holen zu wollen. Wenn irgendwas ein Neuzeichnen der Form/Paintbox anwirft, dann ist dein ganzes Bild weg und deine bisherige Verschiebefunktion verschiebt nur die schön monotone Hintergrundfarbe. (aber dann sind auch diese "Schlieren" nicht mehr zu sehn :stupid:) PS: Öffne dein Bild in Paint, markiere alle (Strg+A), kopiere es (Strg+C), füge etwas versetzt wieder es ein (Strg+V und etwas nach rechts verschieben) und das dann paar mal wieder holen .... fällt dir was auf? * Schlieren Artefakte * und links kann kein neuer Bildteil rein kommen ... von wo auch |
AW: Bitmap scrollen
Zitat:
![]() gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz