![]() |
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 |
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 :)
|
Re: Grafikfehler verhindern
Zitat:
Beim normalen Canvas würde ich es im OnPaint neu zeichnen, doch ob das mit PNG bei dir geht, kann ich dir nicht sagen. |
Re: Grafikfehler verhindern
und wie mach ich das? (mal blöd gefragt) ich hab das Form mittels
Delphi-Quellcode:
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)
Form1.Brush.Style:=bsClear;
|
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;
|
Re: Grafikfehler verhindern
Liste der Anhänge anzeigen (Anzahl: 1)
leider nein, wie gesagt ziemlich knifflig
|
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. ![]() |
Re: Grafikfehler verhindern
ah das erinnert mich
![]() ich weiß sonst auch nicht weiter |
Re: Grafikfehler verhindern
|
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. |
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