![]() |
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 |
Re: Grafikfehler verhindern
Zitat:
|
Re: Grafikfehler verhindern
ich hab schon versucht mit Canvas drauf zu malen... leider ohne erfolg. wie kann ich das dann machen?
|
Re: Grafikfehler verhindern
Du musst das Bitmap bearbeiten und dann UpdateLayeredWindow aufrufen.
|
Re: Grafikfehler verhindern
aber bleibt dann auch der Alphakanal der PNG so wie er ist?
Nur nochmal zum mitmeiseln: ich sill einfach die PNG laden, bearbeiten (zB. ein Button draufmalen) und dann erst ausgeben. hmm... ich probiers mal... Edit: ahh... wunderbrar jetzt hab ichs raus... Danke nochmal an alle |
Re: Grafikfehler verhindern
Zitat:
|
Re: Grafikfehler verhindern
|
Re: Grafikfehler verhindern
Also Miranda hat eigentlich nur eine transpartente Form (Alphablend/Alphablendvalue).
Mit UpdateLayeredWindow arbeitet es nicht. |
Re: Grafikfehler verhindern
die haben aber da auch so ne Art Aero Style (wie ich mit meiner PNG versuch) und die haben aber das Problem mit dem Grafikfehler nicht!?
Was mach ich da falsch? Ich will ja wie gesagt nur n Teil des Bildes/Forms Transparent |
Re: Grafikfehler verhindern
Mit Alphablend aber ohne Schatten (Alphakanal des PNG's).
Zitat:
Dann muss aber auch nach / bei jedem Buttonclick das Spiel wiederholt werden. |
Re: Grafikfehler verhindern
Zitat:
Hast du noch ne Idee wie ich Icons (die ja auch Teilweise Transparent sind) da draufmalen kann? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 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