AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ScrollDC verschmiert ??

Ein Thema von Whookie · begonnen am 25. Feb 2011 · letzter Beitrag vom 26. Feb 2011
Antwort Antwort
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#1

ScrollDC verschmiert ??

  Alt 25. Feb 2011, 20:30
Hallo zusammen!

Ich schreibe gerade an einer Componente (ein TCustomControl Nachfolger) mit der ich einen gepufferten Endlos-Scroller (momentan nur von links nach rechts) realisieren möchte. Das ganze funktioniert auch grundsätzlich. Ich verwende eine Cache-Bitmap (ClientRect-Größe) die ich mit ScrollDC scrolle, dort füge ich dann ein (oder mehrere) neue Spalten ein.

Danach scrolle ich den Canvas des Controls und kopiere dann die neuen Daten von der Cache-Bitmap auf den Canvas des Controls.

Die ganze Bitmap gebe ich im WM_ERASEBKGND aus (hatte ich schon im Paint).

Ein Problem tritt erst auf, wenn ein anderes Fenster das Control so überdeckt, dass "hinter diesem Fenster hervorgescrollt" werden muss. Dann verschmiert das Bild (siehe Anhang) und ich habe bisher keine Möglichkeit gefunden das zu verhindern. Die Frage also, wo muss ich ansetzen, dass das scrollen auch dann funktioniert, wenn das enstpr. Fenster teilweise überdeckt wird?

Edit: Das ganze muss unter Windows XP laufen (in Windows 7 gibts den Effekt nicht)!

TIA
Miniaturansicht angehängter Grafiken
smear.jpg  
Whookie

Software isn't released ... it is allowed to escape!

Geändert von Whookie (26. Feb 2011 um 11:40 Uhr)
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: ScrollDC verschmiert ??

  Alt 26. Feb 2011, 11:14
Ich habe jetzt auch noch ein kleines Testprojekt zusammengestellt. Zum Testen einfach das Programm compilieren und dann zum Beispiel mit dem Windows-Rechner oder einem anderen Programm das Fenster überlagern, sodass oben noch ein Teil der Kreise sichtbar bleibt und horizontal nur die linke Hälfte des Fensters überdecket ist. Mit jedem verschieben des darüberliegenden Fensters ändert sich auch das Verschmieren.

Vielleicht hat ja jemand eine Idee wie man das korrekt hinkriegt?

PS.: Wie im Sourcecoude angemerkt kommen die einzelnen Zeilen im eigentlichen Anwendungsfall nicht von einer Bitmap, sondern werden von einem anderen Programm übergeben.
Angehängte Dateien
Dateityp: 7z Test-Scroll.7z (1,4 KB, 9x aufgerufen)
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: ScrollDC verschmiert ??

  Alt 26. Feb 2011, 11:24
Also bei mir verwischt nichts..
Alternativ kannst du aber noch in FormCreate

DoubleBuffered := True;
setzen

gruss

Geändert von EWeiss ( 9. Jul 2019 um 09:32 Uhr)
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: ScrollDC verschmiert ??

  Alt 26. Feb 2011, 11:27
DoubleBuffered hatte ich schon ohne Erfolg versucht. Ich muss vieleicht noch hinzufügen, dass das Problem nur in Windows XP (und da muss es auch laufen) auftritt, unter Windows 7 verschmiert auch bei mir nichts!
Whookie

Software isn't released ... it is allowed to escape!

Geändert von Whookie (26. Feb 2011 um 11:30 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: ScrollDC verschmiert ??

  Alt 26. Feb 2011, 11:29
DoubleBuffered hatte ich schon ohne Erfolg versucht. Ich muss vieleicht noch hinzufügen, dass das Problem nur in Windows XP auftritt, unter Windows 7 verschmiert auch bei mir nichts!
Jo sorry hab leider kein XP jetzt zur Hand..

gruss
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: ScrollDC verschmiert ??

  Alt 26. Feb 2011, 16:23
So, nach ettlichen Versuchen habe ich nun eine Version, die zu funktionieren scheint. Vielleicht kann da auch mal jemand drüber schaun (Scroll_B) ob das der effizienteste Weg ist sowas zu implementieren?
Angehängte Dateien
Dateityp: 7z Test-Scroll_v2.7z (2,1 KB, 12x aufgerufen)
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:33 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