Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Grafikfehler verhindern (https://www.delphipraxis.net/69173-grafikfehler-verhindern.html)

StefanW 11. Mai 2006 09:27


Grafikfehler verhindern
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi DP,

ich bin momentan dabei für ein Programm eine schönere Oberfläche zu gestalten, und da das mit einer PNG (und ihrem Alphakanal) so schön geht hab ich jedenfalls eine "Gezeichnet". Sieht auch wunderbar aus, allerdings entstehen solche bescheidenen Grafikfehler, wenn sich ein anderes Fenster davorlegt und sich danach verschiebt oder minimiert.

Ich hab mal die Oberfläche und ein Screenshot des Grafikfehlers angehängt...

vllt hat ja einer von euch eine Lösung für das Problem... ich beiß mir da momentan die Zähne drann aus.

Tschau Stefan

OregonGhost 11. Mai 2006 09:32

Re: Grafikfehler verhindern
 
Wenn ich das richtig sehe, ist dein Problem, dass andere Fenster durch den äußeren "weißen" Rand der Form durchscheinen, oder? Das liegt daran, dass das Bild an der Stelle transparent ist. Alpha-Wert auf 255 bzw. 1 setzen für den Rand :)

Matze 11. Mai 2006 09:41

Re: Grafikfehler verhindern
 
Zitat:

Zitat von OregonGhost
Wenn ich das richtig sehe, ist dein Problem, dass andere Fenster durch den äußeren "weißen" Rand der Form durchscheinen, oder?

Das Problem ist sicher, dass, wenn ein Fenster über seiner Anwendung ist und minimiert wird, eine Art "Screenshot" dieses Fensters auf seiner grafischen Oberfläsche zurückbleibt.

Beim normalen Canvas würde ich es im OnPaint neu zeichnen, doch ob das mit PNG bei dir geht, kann ich dir nicht sagen.

StefanW 11. Mai 2006 09:44

Re: Grafikfehler verhindern
 
und wie mach ich das? (mal blöd gefragt) ich hab das Form mittels
Delphi-Quellcode:
Form1.Brush.Style:=bsClear;
transparent gemacht. wenn ich das per Alphablend vom Form mache dann verschwindet doch auch mein PNG auf dem Form... und in der PNG den Wert setzen bringt auch nix da (wie man im Schatten sieht)

Matze 11. Mai 2006 09:47

Re: Grafikfehler verhindern
 
Hi,

du könntest folgendes (zusätzlich?) eingeben, ich weiß nicht ob's funktioniert, aber erste Tests waren positiv. ^^

Delphi-Quellcode:
Form1.Canvas.Brush.Style := bsClear;

StefanW 11. Mai 2006 09:53

Re: Grafikfehler verhindern
 
Liste der Anhänge anzeigen (Anzahl: 1)
leider nein, wie gesagt ziemlich knifflig

OregonGhost 11. Mai 2006 10:01

Re: Grafikfehler verhindern
 
Ah, jetzt seh ich erst, was gemeint war.
bsClear bringt aber doch nicht wirklich was, oder? Das bedeutet doch nur, dass "nichts" gezeichnet wird. Es bedeutet nicht, dass der Hintergrund durchscheint. Das heißt, das, was einmal im Fenster ist, bleibt auch dort, bis es wieder richtig überzeichnet wird.

Das, was du vor hast, erfordert doch ein LayeredWindow, oder?
Wenn man AlphaBlend = true macht, müsste das Fenster schon Layered sein. Dann müsstest du, falls Delphi von sich aus keine Möglichkeit dazu bietet, mit der Funktion UpdateLayeredWindow deine PNG-Grafik als Quelle für die Grafik des Fensters einsetzen. Kann aber sein, dass du das Fenster dann bei jeder Bewegung etc. mit UpdateLayeredWindow aktualisieren musst.
UpdateLayeredWindow

StefanW 11. Mai 2006 10:43

Re: Grafikfehler verhindern
 
ah das erinnert mich die Unit hier da hat alles wunderbar geklappt sah super aus, der Fehler war weg! allerdings waren auch alle Komponenten auf dem Form mit verschwunden, d.h. sie waren schon noch da man konnte sie auch anklicken nur wurden sie mit der PNG übermahlt und kamen auch nicht mehr zum vorschein. kann da vllt mal wer kucken ob man da nicht mal noch was abändern kann?
ich weiß sonst auch nicht weiter

turboPASCAL 11. Mai 2006 11:14

Re: Grafikfehler verhindern
 
Khabarakh hat hier ein Beispiel aufgezeigt wie das auf einfache weise mit PNG-Images funktioniert.

Leider besteht auch in diesem Beispiel das Problen mit den Controls auf einer Form.
Bis jetzt bin ich auch noch nicht auf eine Lösung gekommen. (Controls neu zeichnen lassen ?!)

:gruebel:

StefanW 11. Mai 2006 11:23

Re: Grafikfehler verhindern
 
das gleiche mach die Unit aus dem DF :( und ich komm nicht weiter... schade eigentlich. bei Miranda (so nem Chat Programm) gehts ja auch... nur leider versteh ich den C code nicht sonst hätte ich da mal versucht was zu übersetzen... aber ich weis ja nicht mal wo das da steht. (den Code gibs jedenfalls frei soweit ich weis)

Edit: ich seh grad mein Samurize kann das auch. und ich dacht das war auch Open


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.
Seite 1 von 2  1 2      

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