AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Bitmap scrollen

Ein Thema von tomkupitz · begonnen am 22. Feb 2018 · letzter Beitrag vom 22. Feb 2018
Antwort Antwort
tomkupitz

Registriert seit: 26. Jan 2011
264 Beiträge
 
Delphi 10.4 Sydney
 
#1

Bitmap scrollen

  Alt 22. Feb 2018, 14:33
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
Miniaturansicht angehängter Grafiken
scollbitmap.jpg  
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
2.861 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Bitmap scrollen

  Alt 22. Feb 2018, 14:53
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.977 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Bitmap scrollen

  Alt 22. Feb 2018, 15:18
Zitat:
Warum?
Weil du nur den sichtbaren Bereich verschiebst und den linken Rand nicht mit nichts übermalst.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
tomkupitz

Registriert seit: 26. Jan 2011
264 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Bitmap scrollen

  Alt 22. Feb 2018, 15:38
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.977 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Bitmap scrollen

  Alt 22. Feb 2018, 16:00
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 )



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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (22. Feb 2018 um 16:05 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Bitmap scrollen

  Alt 22. Feb 2018, 16:08
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf