AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi SplashScreen mit PNG?

SplashScreen mit PNG?

Ein Thema von kingflo · begonnen am 7. Nov 2005 · letzter Beitrag vom 8. Nov 2007
Antwort Antwort
Seite 1 von 6  1 23     Letzte » 
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#1

SplashScreen mit PNG?

  Alt 7. Nov 2005, 10:42
...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?
Miniaturansicht angehängter Grafiken
ergebnis_129.jpg   complexstudiosplash_sample_101.jpg   ergebnis_bei_bgcolor_red_207.jpg  
Florian Gilde
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: SplashScreen mit PNG?

  Alt 7. Nov 2005, 12:02
Zitat von kingflo:
Ich bräuchte im Prinzip ne möglichkeit das Image zu zeigen ohne es auf ein Form zu packen oder so....
Zum einen mit der Eigenschaft Transparent kannst Du genau eine Farbe trasparent machen.
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.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: SplashScreen mit PNG?

  Alt 7. Nov 2005, 17:02
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 MSDN-Library durchsuchenUpdateLayeredWindow. Ich kann heute abend eine kleine Demo dazu machen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: SplashScreen mit PNG?

  Alt 8. Nov 2005, 08:16
Zitat von Khabarakh:
Aber wird dann nicht der Alphakanal ignoriert (bzw. nicht richtig mit dem Hintergrund geblendet)?
Das PNG wird auf die TForm gemalt.
Danach wird die Transpatent Eigenschaft bearbeitet. Und damit ist der "unschöne" Schatten zu sehen. Das wird praktisch mit dem TBitmap der TForm gemacht.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#5

Re: SplashScreen mit PNG?

  Alt 8. Nov 2005, 09:48
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).
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: SplashScreen mit PNG?

  Alt 8. Nov 2005, 16:21
Hier die versprochene Demo.
Delphi-Quellcode:
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;
Ich verwende hier für den Alphakanal die GR32-Lib (ist einfach einfach ), aber es ist natürlich auch per WinAPI/VCL möglich.
Angehängte Dateien
Dateityp: zip alphatest_190.zip (262,3 KB, 580x aufgerufen)
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#7

Re: SplashScreen mit PNG?

  Alt 10. Nov 2005, 08:57
danke so gehts *g* danke
Florian Gilde
  Mit Zitat antworten Zitat
Jonas

Registriert seit: 6. Feb 2005
265 Beiträge
 
Delphi 2007 Professional
 
#8

Re: SplashScreen mit PNG?

  Alt 31. Dez 2005, 14:58
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.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#9

Re: SplashScreen mit PNG?

  Alt 31. Dez 2005, 15:02
Hallo,
Zitat von Jonas:
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.
dann pack doch das Bild als Ressource in die exe und lade Dein Bild dynamisch beim Start.

Gruß
xaromz
  Mit Zitat antworten Zitat
Jonas

Registriert seit: 6. Feb 2005
265 Beiträge
 
Delphi 2007 Professional
 
#10

Re: SplashScreen mit PNG?

  Alt 31. Dez 2005, 15:03
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf