Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Bitmap scrollen (https://www.delphipraxis.net/195369-bitmap-scrollen.html)

tomkupitz 22. Feb 2018 13:33

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:
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;
WM_ERASEBKGND und DoubleBuffered habe ich schon probiert, ohne Erfolg.

Danke und beste Grüße

TiGü 22. Feb 2018 13:53

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;

himitsu 22. Feb 2018 14:18

AW: Bitmap scrollen
 
Zitat:

Warum?
Weil du nur den sichtbaren Bereich verschiebst und den linken Rand nicht mit nichts übermalst. :stupid:

tomkupitz 22. Feb 2018 14:38

AW: Bitmap scrollen
 
Zitat:

Weil du nur den sichtbaren Bereich verschiebst und den linken Rand nicht mit nichts übermalst.
??? und wie sieht dann deiner Meinung nach der Quellcode aus?

himitsu 22. Feb 2018 15:00

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

EWeiss 22. Feb 2018 15:08

AW: Bitmap scrollen
 
Zitat:

Zitat von tomkupitz (Beitrag 1394444)
Zitat:

Weil du nur den sichtbaren Bereich verschiebst und den linken Rand nicht mit nichts übermalst.
??? und wie sieht dann deiner Meinung nach der Quellcode aus?

http://delphiexamples.com/components/scrollimage.html

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz