Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Das dämliche flackern von Delphi ... (https://www.delphipraxis.net/156683-das-daemliche-flackern-von-delphi.html)

Zuckerberg 10. Dez 2010 19:34

Das dämliche flackern von Delphi ...
 
Guten Abend Community,

ich wollte wissen wieso Delphi eig Objekte flackern lässt die man auf einem Image bewegt ??
Das ist ziemlich nervig, sieht nicht gut aus und lässt das Programm langsam wirken ...

Es ist so das ich ein HintergrundImage hab und und ein Panel darauf
und wenn ich dieses bewegen möchte flackert dies ...

Lösungsvorschläge ???

Gruß Zuckerberg

Luckie 10. Dez 2010 19:36

AW: Das dämliche flackern von Delphi ...
 
Das hat nichts mit Delphi zu tun. Sondern liegt an Windows, da es ja immer wieder neu zeichnen muss. Und ob es da eine Lösung gibt hängt davon ab, wie dein bisheriger Code aussieht und was du schon probiert hast.

s.h.a.r.k 10. Dez 2010 19:42

AW: Das dämliche flackern von Delphi ...
 
Eine "Workaround" für sowas gibts: DoubleBuffer.

Assarbad 10. Dez 2010 19:46

AW: Das dämliche flackern von Delphi ...
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1067769)
Eine "Workaround" für sowas gibts: DoubleBuffer.

Welches man tunlichst vermeiden sollte, falls man innerhalb einer RDP-Sitzung läuft ;)

s.h.a.r.k 10. Dez 2010 20:22

AW: Das dämliche flackern von Delphi ...
 
Zitat:

Zitat von Assarbad (Beitrag 1067772)
Welches man tunlichst vermeiden sollte, falls man innerhalb einer RDP-Sitzung läuft ;)

Und warum das? Wird das ganze dann wesentlich langsamer?!

jfheins 10. Dez 2010 20:33

AW: Das dämliche flackern von Delphi ...
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1067784)
Zitat:

Zitat von Assarbad (Beitrag 1067772)
Welches man tunlichst vermeiden sollte, falls man innerhalb einer RDP-Sitzung läuft ;)

Und warum das? Wird das ganze dann wesentlich langsamer?!

Ja. Genaueres hier: http://blogs.msdn.com/b/oldnewthing/...03/508694.aspx

Zitat:

Zitat von Zuckerberg (Beitrag 1067765)
ich wollte wissen wieso Delphi eig Objekte flackern lässt die man auf einem Image bewegt ??
Das ist ziemlich nervig, sieht nicht gut aus und lässt das Programm langsam wirken ...

Es ist so das ich ein HintergrundImage hab und und ein Panel darauf
und wenn ich dieses bewegen möchte flackert dies ...

Glaub mir, das wirkt nicht nur so. Das ist auch langsam. ich habe noch nie ein halbwegs richtiges Spiel gesehen, dass mit Panels und Images herumhantiert hat.

Zitat:

Lösungsvorschläge ???
Naja, DirectX wäre eine Möglichkeit. Ist aber einiges an Aufwand.

Einfacher und auch noch halbwegs performant: Intern ein Bitmap vorhalten, auf das gezeichnet wird. Wenn alle Zeichenoperationen fertig sind, das Bitmap auf den Bildschirm kopieren, leeren und wieder neu bemalen.

s.h.a.r.k 10. Dez 2010 20:37

AW: Das dämliche flackern von Delphi ...
 
Zitat:

Zitat von jfheins (Beitrag 1067788)
Zitat:

Zitat von s.h.a.r.k (Beitrag 1067784)
Zitat:

Zitat von Assarbad (Beitrag 1067772)
Welches man tunlichst vermeiden sollte, falls man innerhalb einer RDP-Sitzung läuft ;)

Und warum das? Wird das ganze dann wesentlich langsamer?!

Ja. Genaueres hier: http://blogs.msdn.com/b/oldnewthing/...03/508694.aspx


Wobei es halt drauf an kommt, welche Technik hinter dem Remote-Programm steckt. Ich kenne z.B. dieses "Differenz-Verfahren" (nenne ich einfach mal so :mrgreen:) bei dem man den Screen aufnimmt und dann die Unterschiede zwischen zwei Bildern sendet. Bei dieser Technik dürfte das ja nicht auftreten, oder? Aber belassen wir es lieber dabei. Das wird sonst zu OT.

Assarbad 10. Dez 2010 21:00

AW: Das dämliche flackern von Delphi ...
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1067789)
Wobei es halt drauf an kommt, welche Technik hinter dem Remote-Programm steckt. Ich kenne z.B. dieses "Differenz-Verfahren" (nenne ich einfach mal so :mrgreen:) bei dem man den Screen aufnimmt und dann die Unterschiede zwischen zwei Bildern sendet. Bei dieser Technik dürfte das ja nicht auftreten, oder? Aber belassen wir es lieber dabei. Das wird sonst zu OT.

Genau das ist der Knackpunkt. Wie auch die "schnelleren" VNCs (UltraVNC, TightVNC ... hoffentlich gehen die nie zusammen :zwinker:) benutzt RDP auch ein solches "differentielles" Verfahren. Genau aus diesem Grund sollte man nicht doppelt Puffern, weil das der Client übernimmt. Aber dein Programm - innerhalb der Sitzung - läuft ja auf dem entfernten Server (und das in den meisten Fällen) sogar ohne daß es auf dem (entfernten) Bildschirm dargestellt wird. Es handelt sich also um einen "virtuellen" Bildschirm. Wenn du nun doppelt pufferst, nimmst du damit RDP jegliche Chance die Unterschiede sinnvoll zu ermitteln, denn bei dieser Methode wird ja gerade das "Bild" (von deinem Fenster) im Speicher zusammengestellt und dann auf den entsprechenden Bereich des Fensters/Desktops geblittet. Und wenn sich nur ein klitzekleines Element im Fenster verändert hat, macht es keinen Sinn eine "Bitmap" von deinem gesamten Fenster zu übertragen nur weil du eben doppelt pufferst ... daher ist es Unsinn und dem eigentlichen Ziel abträglich.

Zuckerberg 11. Dez 2010 21:49

AW: Das dämliche flackern von Delphi ...
 
Gut ich hätte da ein Spiel das ich demnächst sprich morgen hochladen werde, dann könntet ihr euch ja eine Meinung bilden :)

wurde nämlich nach diesem Prinzip erstellt


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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