![]() |
SplashScreen mit PNG?
Liste der Anhänge anzeigen (Anzahl: 3)
...mm ich weiß gerade nicht wie ich meine Frage formulieren soll...
Also ich habe ein Bild (ein png) und möchte es als SplashScreen für ein Programm einsetzen. Ich habe mir auch schon TPNGImage installiert. Problem ist folgendes: wenn ich das Bild auf eine Form Packe sieht es super aus. Jetzt muss das Form aber ja transparent gemacht werden also setze ich TransparentColor auf true und als Value die BGColor farbe. Das doofe ist jetzt, das auf dem Image die BG Farbe aus dem Form auch transparent wird und das Bild aber als PNG schon transparenz hat. Folglich nimmt das Bild Als Farbwert dann auch teilweise das eingestellte BGColor. Ich weiß das ist jetzt irgendwie doff beschrieben, aber besser formulieren konnte ich es nicht. Am bessten seht ihr euch die Anhänge an dan versteht Ihr villeicht wo mein Problem ist. Ich bräuchte im Prinzip ne möglichkeit das Image zu zeigen ohne es auf ein Form zu packen oder so.... Hat jemand eventuell eine Idee was ich machen kann, damit das ergebnis so wird wie es sein soll? |
Re: SplashScreen mit PNG?
Zitat:
Du hast aber einen Schatten. Der Schatten besteht natürlich aus mehreren Abstufungen. Das geht nicht mit Transparent. Außerdem möchtest Du dass Das Splasch duchsichtig wird. Dazu kann man die Eigenschaft AlphaBlend verwenden. Das Image soll aber nicht duchsichtig werden. Ein einfacher Weg wäre ein weiteres TForm, dass nur das bild beinhaltet und mit Transparenz auch nur dieses anzeigt. (Alphablend := False) Zeige nun das Splash und lege das Andere Form darüber. Ist zwar nicht die beste Lösung, sollte aber funktionieren. |
Re: SplashScreen mit PNG?
Aber wird dann nicht der Alphakanal ignoriert (bzw. nicht richtig mit dem Hintergrund geblendet)?
@kingflo: Mit nur einer Form geht es über die API-Funktion ![]() |
Re: SplashScreen mit PNG?
Zitat:
Danach wird die Transpatent Eigenschaft bearbeitet. Und damit ist der "unschöne" Schatten zu sehen. Das wird praktisch mit dem TBitmap der TForm gemacht. |
Re: SplashScreen mit PNG?
Vom rein logischen her wirst du mit einer quasi reinen "WM_PAINT und Alphatransparent"-Lösung keine Chance haben. Die Erklärung dafür steht in den anderen Beiträgen.
Das Einzige was sauber funktionieren wird ist Khabarakhs Vorschlag, muss da was die Praxis anbelangt aber auch passen. Du weist damit dem Window das PNG zu und Windows kümmert sich um die korrekte Darstellung Pixel für Pixel. TransparentColor und Alphatransparency sind eigentlich nur Untermengen dieser Funktion. Eine weitere Möglichkeit das ganze auch < Win2k funktionieren zu lassen, ist es wie die meisten Adobe-Produkte zu machen. Erst Screenshot, dann Bild drauf und darstellen (war zumindest früher so). |
Re: SplashScreen mit PNG?
Liste der Anhänge anzeigen (Anzahl: 1)
Hier die versprochene Demo.
Delphi-Quellcode:
Ich verwende hier für den Alphakanal die GR32-Lib (ist einfach einfach :wink: ), aber es ist natürlich auch per WinAPI/VCL möglich.
procedure TForm1.FormCreate(Sender: TObject);
var Alpha: Boolean; begin Bit := TBitmap32.Create; LoadPNGintoBitmap32(Bit, ExtractFilePath(ParamStr(0)) + 'test.png', Alpha); setWindowLong(Handle, GWL_EXSTYLE, getWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED {or WS_EX_TRANSPARENT}); // WS_EX_TRANSPARENT macht das Fenster für Mausklicks transparent BlendF.BlendOp := AC_SRC_OVER; BlendF.BlendFlags := 0; BlendF.SourceConstantAlpha := 255; BlendF.AlphaFormat := AC_SRC_ALPHA; P := Point(0, 0); Size.cx := Bit.Width; Size.cy := Bit.Height; UpdateLayeredWindow(Handle, 0, nil, @Size, Bit.Handle, @P, 0, @BlendF, ULW_ALPHA); end; |
Re: SplashScreen mit PNG?
danke so gehts *g* danke
|
Re: SplashScreen mit PNG?
Ich wollte mal fragen ob man das Bild nicht auch irgendwie aus ner Imagelist oder aus nem TImage oderso auslesen lassen kann? Naja ich wollte halt nicht das die datei außerhalb ist sondern mit in meiner exe.
|
Re: SplashScreen mit PNG?
Hallo,
Zitat:
Gruß xaromz |
Re: SplashScreen mit PNG?
Joa das würde ich ja gerne, aber mit dem Resource Editor den ich habe, geht das nicht. Ich kann zwar pngs hinzufügen, doch wandelt er diese dann in bitmaps um.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 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