| Autor |
Beitrag |
Pixelex
      
Beiträge: 28
|
Verfasst: Mi 06.02.08 21:26
Hallo,
man hatte mir in der Programmierecke empfohlen erstmal mit Turbo Delphi für Win32 zu starten als Anfänger, allerdings kann ich dort zumindest über TImage keine transparenten PNG-Grafiken mit z.B. Schatten einfügen. Wie verwirkliche ich das nun mit Turbo Delphi? Auf Drittanbieter-Komponenten wie z.B. pngdelphi.sourceforge.net/ kann ich ja anscheinend nicht zurückgreifen. :/ Ich brauch aber transparente Grafiken.
Dafür das viele meinen Turbo Delphi reicht vollkommen aus finde ich es ziemlich arm, das transparente Grafiken nicht gehen, ich meine das sind Mindestvorraussetzungen.
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mi 06.02.08 22:35
Hat man dich nicht darauf hingewiesen das Du Komponenten dynamisch nutzen kannst.
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Pixelex 
      
Beiträge: 28
|
Verfasst: Mi 06.02.08 22:43
Blackheart666 hat folgendes geschrieben: | | Hat man dich nicht darauf hingewiesen das Du Komponenten dynamisch nutzen kannst. |
Hm. Und was heisst das nun praktisch? Kann ich die PNGImage Komponente doch irgendwie nutzen? Wenn ja wie?
|
|
Pixelex 
      
Beiträge: 28
|
Verfasst: Mi 06.02.08 23:23
Funktioniert nun wenn ich die .pas von der PNGImage-Komponente in die uses eintrage und das TImage per Laufzeit mit Splash.Picture.LoadFromFile('Grafiken/pnet_logo.png'); lade.
Es gibt nur zwei weitere Probleme:
Erstens... nun müssen die Grafiken immer extern bei der .exe-Datei liegen und werden nicht mit in die .exe kompiliert.
Zweitens... wie bekomme ich die Form im Hintergrund unsichtbar, das TImage, also der Splashscreen mit Schatten soll sichtbar bleiben. Jetzt ist es nämlich so das die transparente Grafik auf dem grauen Hintergrund der Form liegt. :/
Moderiert von matze: Delphi-Tags hinzugefügt
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mi 06.02.08 23:46
Du gibst Dir doch schon fast die Antworten selber, schau mal nach Splash Screen da findest Du hier einiges und um Bilder etc. zu integrieren schau mal nach Resource.
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Pixelex 
      
Beiträge: 28
|
Verfasst: Mi 06.02.08 23:53
Blackheart666 hat folgendes geschrieben: | | Du gibst Dir doch schon fast die Antworten selber, schau mal nach Splash Screen da findest Du hier einiges und um Bilder etc. zu integrieren schau mal nach Resource. |
Nein ich will aber nicht diesen hier im Forum gebräuchlichen SplashScreen machen. Ich will die Form1 zum SplashScreen machen, wie mache ich die Transparent und zeige nur ein Bild an das darin liegt?
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: Do 07.02.08 09:15
Bilder in die EXE integrieren: Das hatte Blackheart666 zwar schon gesagt. Aber du kannst die Bilder auch in eine Resource packen und diese dann zur Laufzeit laden. Das halte ich sowieso für den besseren Weg als die direkt in ein Formular zu integrieren. Und ja ich weiß, dass es mehr arbeit bedeutet aber so etwas kommt beim Programmieren durchaus schon mal vor. Man kann leider, oder wohl eher zum Glück, noch nicht alles einfach so zusammen klicken.
SplashScreen: Solche Halbtranzparenzen sind im Windows nicht von Hause aus vorgesehen. Also da hast du entweder die Möglichlkeit, dass du dich auf einen bereits existierenden Code stützt oder, dass du es selber programmierst. Wenn du es machen willst müsstest du den Hintergrund des Fensters kopieren und dann dein Transparentes Bild drauf zeichnen. Dazu darf dein Fenster aber weder Rand noch Titelleiste haben. Das ist der einfachste weg. Falls sich hinter dem SplashScreen etwas ändern kann würde es dadurch nicht einfacher werden. Aber ich würde dir raten schau dir mal evtl bereits existierenden Code an. Das spart arbeit und nerven. Außerdem ist so etwas meistens schon besser getestet (mit anderen Worten sicherer) als irgendetwas was man selber machen könnte.
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
Pixelex 
      
Beiträge: 28
|
Verfasst: Do 07.02.08 09:21
Jo das klappt ja nun alles, allerdings ist die PNG-Datei nur IN der Form transparent.
Wenn ich nun die Form wie folgt ausblende:
Delphi-Quelltext 1: 2:
| Splash.Brush.Style:=bsClear; Splash.BorderStyle:=bsNone; |
Dann ist die Form zwar weg, allerdings liegt der Schatten des Splash wieder auf Weiss.  Und die GR32 Lösung kapier ich nicht. 
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 07.02.08 13:34
Probier mal das
TransparentColorValue auf clFuchsia
FormColor auf clFuchsia
TransparentColor auf True
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Pixelex 
      
Beiträge: 28
|
Verfasst: Do 07.02.08 21:08
Blackheart666 hat folgendes geschrieben: | Probier mal das
TransparentColorValue auf clFuchsia
FormColor auf clFuchsia
TransparentColor auf True |
Nein dann ist der Schatten leider auch in clFuchsia! :/
|
|
Pixelex 
      
Beiträge: 28
|
Verfasst: Do 07.02.08 22:39
Danke erstmal für eure Geduld!
Ich bin nun fast am Ziel. Habe nun doch Graphics32 installiert und so funktioniert es OPTISCH nun einwandfrei:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Bit := TBitmap32.Create; LoadPNGintoBitmap32(Bit, ExtractFilePath(ParamStr(0)) + 'grafiken/pn_logo.png', Alpha); setWindowLong(Handle, GWL_EXSTYLE, getWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED); BlendF.BlendOp := AC_SRC_OVER; BlendF.BlendFlags := 0; BlendF.SourceConstantAlpha := 255; BlendF.AlphaFormat := AC_SRC_ALPHA; P2 := Point(0, 0); Size.cx := Bit.Width; Size.cy := Bit.Height; UpdateLayeredWindow(Handle, 0, nil, @Size, Bit.Handle, @P2, 0, @BlendF, ULW_ALPHA); |
Jetzt bleibt lediglich das Problem: Wie lade ich 'grafiken/pn_logo.png' mit dem LoadPNGIntroBitmap32 aus meiner Resource-Datei? Nun braucht er die Datei ja wieder von extern. :/
|
|
Pixelex 
      
Beiträge: 28
|
Verfasst: Fr 08.02.08 22:50
|
|