Autor |
Beitrag |
anno2007
      
Beiträge: 68
Win 7, Ubuntu
Delphi XE
|
Verfasst: Mi 08.12.10 16:00
Hey,
ich benutze Delphi XE. Also kann ich PNG Bilder direkt einbinden.
Jetzt würde ich gerne die Form unsichtbar machen und nur noch das Hintergrundbild als GUI benutzen.
Kann mir da vielleicht jemand einen Ansatz zeigen? Ich habe bis jetzt nur ein Beispiel mit BMP gesehen, mit dem ich allerdings nicht wirklich klar komme und dort wird der Alpha Channel nicht richtig unterstützt.
Wäre echt toll, wenn jemand einen Ansatz hätte.
Vielen dank,
anno2007
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mi 08.12.10 16:32
Für diesen Beitrag haben gedankt: Xion
|
|
anno2007 
      
Beiträge: 68
Win 7, Ubuntu
Delphi XE
|
Verfasst: Mi 08.12.10 17:20
Hey, ja, das ist schonmal ein Anfang. Ja, das Bild liegt auf der Form.
So ähnlich wird das auch hier gemacht:
www.delphi-central.c...itmapShapedForm.aspx
Allerdings funktioniert das mit Alpha Channel nicht. Das erzeugt Kanten, ich bräuchte transparenz.
Ich hab jetzt noch was gefunden:
melander.dk/articles/alphasplash2/2/
Allerdings werden dort Bibliotheken benutzt. Ich bekomme nicht mal das Beispiel zum laufen.
Habt ihr noch ne idee?
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 08.12.10 17:30
Kommt drauf an wie lange du den Splash-Screen anzeigen willst, aber ich hab schon gesehen, dass der Splash Screen einfach nur hingemalt wird (sobald man ein Fenster drüberschiebt ist er weg). Das funktioniert, solange du den nicht 1min anzeigen willst.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
anno2007 
      
Beiträge: 68
Win 7, Ubuntu
Delphi XE
|
Verfasst: Mi 08.12.10 21:56
Nee, das soll meine GUI werden.
Also ich will auch noch Controls drauf machen.
Splash Screen war vielleicht bisschen falsch gewählt  .
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Do 09.12.10 01:14
anno2007 hat folgendes geschrieben : | Habt ihr noch ne idee? |
Meinst Du das in etwa so, wie im folgenden Beispielprogramm? Das Bild zeigt übrigens meine Schäferhündin.
Hier noch der Source dazu:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| unit Main;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls;
type TForm1 = class(TForm) Button1: TButton; Image1: TImage; procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin Close; end;
procedure TForm1.FormActivate(Sender: TObject); begin while AlphaBlendValue < 255 do begin AlphaBlendValue := AlphaBlendValue + 1; Form1.Update; Sleep(20); end; Button1.Visible := true; end;
procedure TForm1.FormCreate(Sender: TObject); var Rechteck : HRgn; begin Rechteck := CreateRectRgn(17, 38, 560, 456); SetWindowRgn(Form1.Handle, Rechteck, True); end;
end. |
|
|
anno2007 
      
Beiträge: 68
Win 7, Ubuntu
Delphi XE
|
Verfasst: Do 09.12.10 14:41
Hmm,
ich meine das eigentlich so wie die Links die ich gepostet habe.
Also ich habe ein PNG mit Alpha Channel, das die GUI darstellen soll.
Allerdings komm ich damit gar nicht klar.
Aber danke schonmal für deine Bemühungen.
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Do 09.12.10 15:34
Nachfrage: Also besteht die GUI praktisch nur aus der 7 und dem Schriftzug "Delphi"? Und soll das dann wie in meinem Beispiel eingeblendet werden?
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Do 09.12.10 15:54
In meiner Delphi Version hat eine TForm die Eigenschaft TransparentColor und TranspaentColorValue, wenn du BorderStyle auf bsNone setzt, kannst du damit genau das erreichen, was du vorhast. Scheint aber alles nicht sonderlich schnell zu sein.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Do 09.12.10 16:07
Ließ dir mal das hier durch. Ich denke es könnte dir helfen.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
anno2007 
      
Beiträge: 68
Win 7, Ubuntu
Delphi XE
|
Verfasst: Do 09.12.10 20:57
@Gerd Kayser
Das "Delphi 7" und der Schriftzug ist einfach ein Bild. Mein Bild später ist eine PNG Datei mit Alpha Channel, die ich als GUI benutzen will. Die Form soll auch nicht eingeblendet werden oder so, ich will nur das Bild als Hintergrund.
Das Bild soll meine GUI sein.
@Jann1k, damit bleibt aber die GUI bei mir irgendwie erhalten.
@elundril, das ist schon genau das was ich suche. Ich bekomme im Moment die gr32 nicht zum laufen unter Delphi XE, aber das bekomme ich schon noch hin.
Meine Hoffnung war halt, dass ich keine externe Bibliothek verwenden muss, weil Delphi PNG ja unterstützt.
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Do 09.12.10 21:35
Zitat: | @Jann1k, damit bleibt aber die GUI bei mir irgendwie erhalten. |
Mach mal nen Screenshot wie das aussieht, wenn du TransparentColor auf true setzt und TransparentColorValue auf die farbe deiner TForm (am besten beides auf was unbenötigtes wie clFuchsia setzen).
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 09.12.10 23:17
meinst Du in der Art?
www.bummisoft.de/download/transtest.zip
ist Resizeable
die entscheidenden Codeteile sind
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| SetWindowLong(handle, GWL_EXSTYLE, exStyle or WS_EX_LAYERED);
With blendFunc do begin AlphaFormat := 1; BlendFlags := 0; BlendOp := AC_SRC_OVER; SourceConstantAlpha := 255 - FAlphaValue; end;
UpdateLayeredWindow(Handle, DC, @DestPoint, @winSize, Fbackimage.Canvas.Handle, @srcPoint,FSheetColor, @blendFunc, 2); |
Allerdings mußt Du Controls dann wenn selbst gemacht präparieren, wenn Fremd reinfaken...
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
anno2007 
      
Beiträge: 68
Win 7, Ubuntu
Delphi XE
|
Verfasst: Fr 10.12.10 00:56
Hey,
@Jann1k, es funktioniert nach deiner beschreibung, allerdings funktioniert die Transparenz im Bild nicht.
@bummi, das sieht echt gut aus!
Ich weis nur leider gar nicht wie ich das implementieren soll.
was is blendFunc?
Und wo muss SetWindowLong, UpdateLayeredWindow?
Ich danke echt für eure Gedult  mit mir habt ihrs schon schwer.
|
|