Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Form mit PNG Skin und VCL Controls (https://www.delphipraxis.net/75824-form-mit-png-skin-und-vcl-controls.html)

Coder90 25. Aug 2006 12:49


Form mit PNG Skin und VCL Controls
 
Liste der Anhänge anzeigen (Anzahl: 4)
Edit//
turboPASCAL hat wahrscheinlich eine bessere Lösung gefunden

http://www.delphipraxis.net/internal...=606056#606056

Hi
Nach endlosem rumgefriemel hab ichs endlich geschafft. :D

http://img134.imageshack.us/img134/785/skinbl1.png
Screenshot 2

Eine transparente PNG Form mit VCL Controls.
Kein geruckel beim verschieben und sehr CPU freundlich.
Perfekt geeignet für kleine Utilities und Widgets.
Und das Beste: es ist kostenlos. :D

Die ganze Sache besteht aus 2 Forms.
Einmal die Hauptform mit den Controls. Durch TransparentColor wird der Hintergrund durchsichtig gemacht. Nachteil: Komponenten mit Transparents wie die XP Buttons werden mit Rand dargestellt.
Auf der 2. Form wird die PNG per Graphics32 angebracht. Dadurch gehn die VCL Controls verloren. Deshalb auf einer extra Form.
Durch ein bischen friemelei wird die erste Form immer vor der zweiten Form gehalten und beim verschieben mitbewegt.

Zum kompilieren braucht man die Graphics32, die GR32_PNG.pas (unten) und PNGImage.

Der Source ist nicht der beste.
Über Verbesserungvorschläge würd ich mich freuen.
Danke

Crossposting DF

MfG, Coder90

Gandalfus 25. Aug 2006 14:41

Re: Form mit PNG Skin und VCL Controls
 
Warum benutzt du nicht Regions?

himitsu 25. Aug 2006 14:56

Re: Form mit PNG Skin und VCL Controls
 
Ich würd mal sagen, weil Regions keine Teiltransparenz zulassen?


Dennoch ist es nicht gerade 'ne ideale Lösung :shock:
(hab aber och nüschts Besseres)

PS: das mit dem "Rahmen" um abgerundete (XP)-Controls tauchst auch schon auf, wenn man DoubleBuffered aktiviert . liegt halt daran, daß beim Zeichnen der Hintergrund nicht vorhanden ist und daher dieser als Schwarz gezeichnet wird :(

Coder90 25. Aug 2006 15:00

Re: Form mit PNG Skin und VCL Controls
 
Zitat:

Zitat von himitsu
Dennoch ist es nicht gerade 'ne ideale Lösung :shock:

Aber die einzige die ich kenne. :wink:
Hab bisher nirgendwo eine bessere gesehn.

BrainCracked 26. Aug 2006 18:26

Re: Form mit PNG Skin und VCL Controls
 
Ich habe die Graphics32 jetzt installiert. Aber bei der GR32_PNG.pas kommt immer eine Fehlermeldung. Soll die Komponente noch in das Package von Graphics32? Wie macht man das? Ich nutze Delphi 2005 PE.

turboPASCAL 6. Sep 2006 13:26

Re: Form mit PNG Skin und VCL Controls
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zugegeben, die Idee ist nicht schlecht aber auch nicht neu. ;)

Ich gehe einen anderen Weg, einfach das Bitmap der Form verwenden ( FormX.GetFormImage ).
Das wird dan per Transparentcolor auf das "Pngfenster" gezeichnet.

Im Anhang mal ein Demoprojeckt. Aber Achtung, irgrnd wo ist noch ein dickes Memoryleak.
Entweder in meinem Programm oder in der GR32.Pas. ;)

An sonsten bleibt nur noch der Weg sich die Controld wie Buttons, Labels usw. neu zu schreiben und diese auf das Bitmap zu zeichnen.

Coder90 11. Sep 2006 21:07

Re: Form mit PNG Skin und VCL Controls
 
@BrainCracked: Es reicht wenn die GR32_PNG.pas in einem Verzeichniss ist, welches Delphi im Suchpfad hat
oder im gleichen Ordner wie das Projekt, dass sie verwendet.
Auserdem musst du noch PNGImage installieren.
Ich hab auch D2005PE und es funktioniert. ^^

@turboPASCAL:
Gute Idee ABER deine Form lässt sich nicht verschieben.
Meine schon. (Einfach irgendwo aufs PNG klicken)
Edit// Werds nochmal unter die Lupe nehmen

turboPASCAL 11. Sep 2006 22:36

Re: Form mit PNG Skin und VCL Controls
 
Zitat:

Zitat von Coder90
@turboPASCAL:
Gute Idee ABER deine Form lässt sich nicht verschieben.
Meine schon. (Einfach irgendwo aufs PNG klicken)

...

Hatte ich bei dem Demo auch nicht vorgesehen, das verschieben ist das einfachste.
DAs Prob. war nur die Form ohne Form aber mit Controls. ;)

Schneehasi 5. Dez 2006 09:58

Re: Form mit PNG Skin und VCL Controls
 
leg das transparente Form mal über nen Video ... dann ist leider Schluss mit transparenz :-( gibt es dafür nen Weg, oder ist das aussichtslos ?

delphinia 15. Dez 2006 16:05

Re: Form mit PNG Skin und VCL Controls
 
gibt es ne möglichkeit das auch für D5 zu machen?

jakobwenzel 15. Dez 2006 16:26

Re: Form mit PNG Skin und VCL Controls
 
@Schneehasi: Graka-Overlays deaktivieren

julben 11. Feb 2007 17:30

Re: Form mit PNG Skin und VCL Controls
 
Ist es normal, dass die Schrift so "unsauber" ist (also mit dem Rand)? Das ist bei der Demo-App und bei meiner Selbsterstellten. Auf Coder90's Screenshot isses ja ganz sauber.

Coder90 11. Feb 2007 17:40

Re: Form mit PNG Skin und VCL Controls
 
Schau dir lieber mal die Lösung von turboPASCAL an.
Ich glaube die ist besser als meine.
Bin nur leider noch nicht dazu gekommen das ausgiebig zu testen.

MfG

julben 11. Feb 2007 18:08

Re: Form mit PNG Skin und VCL Controls
 
Liste der Anhänge anzeigen (Anzahl: 2)
Da hat die Schrift auch den pinken Rand.
Ich vermute ma, liegt an Windows, hab ja die schon kompilierten Demos genommen.

Coder90 11. Feb 2007 18:18

Re: Form mit PNG Skin und VCL Controls
 
Das liegt daran, weil bei dir die Schriftart am Rand halbtranzparente Pixel hat.
Der gleiche Grund warum man auch den XP-Style nicht benutzen kann.

Versuch mal in deinem Programm eine Schriftart einzustellen die keine halbtranzparente Pixel am Rand hat.

MfG

julben 11. Feb 2007 18:25

Re: Form mit PNG Skin und VCL Controls
 
Aaaahhhh... Halbtransparent - ClearType.
Fortsetzung: http://www.delphipraxis.net/internal...=680297#680297

edit: Oder kann man die Schrift ohne dieses Problem glätten?

Basic-Master 4. Mär 2007 12:52

Re: Form mit PNG Skin und VCL Controls
 
Danke für die Unit, sieht sehr, sehr gut aus :P

Man kann überings das 1. transparente Fenster weglassen, wenn man einfach nach dem draggen UpdateLayeredWindow() mit den gleichen Parametern wie in FormCreate aufruft, ist mir gerade durch experiementieren aufgefallen :)

Edit: Argh, dafür sieht man danach die VCLs nicht mehr, Form wird wohl doch benötigt :drunken:

turboPASCAL 4. Mär 2007 13:10

Re: Form mit PNG Skin und VCL Controls
 
:gruebel: Guckst Du mal Post #6 .

Basic-Master 4. Mär 2007 18:52

Re: Form mit PNG Skin und VCL Controls
 
Hmm, mein Fehler :wall: Die 1. Methode hat aber doch was, damit kann man z.B. Browser oder andere Controls masken und gleichzeitig Transparenz beibehalten.

Mark90 19. Mär 2007 19:11

Re: Form mit PNG Skin und VCL Controls
 
Hi Coder 90.

ich hab gerade dein Projekt getestet. Es ist wirklich Hammer.

DANKE

Mark90 27. Mär 2007 18:53

Re: Form mit PNG Skin und VCL Controls
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi

alle!

nach kurzem probieren hab ich es geschafft den xp-style bei meiner png form zu verwenden!

Yheeky 8. Mai 2007 21:06

Re: Form mit PNG Skin und VCL Controls
 
Frage: Wie kann ich denn PNG fest einbinden? Ich möchte die nicht aus einer Datei heraus laden...vielleicht kann mir da ja jemand helfen.

Danke!

Blink 8. Mai 2007 21:33

Re: Form mit PNG Skin und VCL Controls
 
Zitat:

Zitat von Yheeky
Frage: Wie kann ich denn PNG fest einbinden? Ich möchte die nicht aus einer Datei heraus laden...vielleicht kann mir da ja jemand helfen.

Danke!

Hi

Als Ressource in die exe mit einbinden. Vielleicht hilft dir das ja HIER

Yheeky 10. Mai 2007 18:58

Re: Form mit PNG Skin und VCL Controls
 
Okay danke, das habe ich hinbekommen :-)
Nun hab ich noch eine Frage: Ich zeichne mit einem PNG den Umriss einer Form inklusive Titelleiste. Wie kann ich nun einen Minimieren, Maximieren bzw. Schließen Knopf einfügen? Egal was ich mache (auch wenn ich ein TButton auf die Form setze) wird nichts angezeigt :-/

turboPASCAL 11. Mai 2007 09:44

Re: Form mit PNG Skin und VCL Controls
 
Zitat:

Egal was ich mache (auch wenn ich ein TButton auf die Form setze) wird nichts angezeigt :-/
Lies dir doch bitte mal diesen Thread durch, hier wurde das wieso und warum schon "durchgekaut". ;)
(glaube ich... :gruebel: )

Also, mit UpdateLayeredWindow wird ein 32-Bit Bitmap mit Alphakanal als "Windowsersatz" verwendet.
Es wird dann nur noch dieses Bitmap auf dem bildschirm angezeigt. Will man nun irgendwelche Controls
wie zB. ein Label oder Button haben muss dieser auf das 32-Bit Bitmap.

Es gibt nun zwei Möglichkeiten, entweder man baut sich eigene Controls die direct auf dieses Bitmap zeichnen oder man Trickst ein wenig und kopiert das Bitmap der Form welches man über GetFormImage erhält und dieses mit TransparentColor durchsichtig gemacht hat auf
das 32-Bit Bitmap.

kalmi01 11. Mai 2007 12:00

Re: Form mit PNG Skin und VCL Controls
 
@turboPASCAL: so gibts kein MemoryLeak
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
  PNGBmp32.Free;
  ScrBmp32.Free;   <<< hat gefehlt
end;

turboPASCAL 12. Mai 2007 10:37

Re: Form mit PNG Skin und VCL Controls
 
Zitat:

Zitat von kalmi01
@turboPASCAL: so gibts kein MemoryLeak ...

Es stimmt schon das dort am Ende eine Freigabe einer Resource fehlte die aber nicht so tragisch ist/war. Es lag an etwas anderem und dieser Fehler wurde beseitigt.

Ich habe mal in Post #6 eine neuere Version hochgeladen.

Das Ändert aber nichts an der Tatsache das bei der Textausgabe mit gr32.RenderText() so viele Page Faults kommen das sich das Prg. nach einer längeren Laufzeit ohne Fehlermeldung verabschiedet.
( Grund: MemoryLeak ? :gruebel: )

kalmi01 12. Mai 2007 14:44

Re: Form mit PNG Skin und VCL Controls
 
Zitat:

Zitat von turboPASCAL
Das Ändert aber nichts an der Tatsache das bei der Textausgabe mit gr32.RenderText() so viele Page Faults kommen das sich das Prg. nach einer längeren Laufzeit ohne Fehlermeldung verabschiedet.

Nicht nur das !
Unter XP-SP2 habe ich festgestellt, das andere Fenster (Explorer, usw.) nach einiger Zeit nicht mehr korrekt funktionieren.
Der rechte Rand wird ca. daumenbreit nicht mehr korrekt gezeichnet.
Wie das zusammen hängt kann ich nicht sagen, aber es ist auf dem Rechenr reproduzierbar.
Könnte aber mit der GraKa zusammenhängen.
Unter Win2000 mit gleicher GraKa tritt der Effekt nicht auf.

RobertP 10. Jun 2007 14:20

Re: Form mit PNG Skin und VCL Controls
 
Ist das normal dass ich bei der Lösung von turboPascal immer ne Prozessorauslastung von ~50% habe, ohne dass ich die Form bewege? Ich hab nen Athlon 64 3000+ (sollte eigentlich für Delphiforms reichen :-D )

turboPASCAL 10. Jun 2007 15:45

Re: Form mit PNG Skin und VCL Controls
 
Liste der Anhänge anzeigen (Anzahl: 1)
:gruebel: Nö.

CPU: AMD Athlon(tm) XP 2400+ (2,0 GHz)
RAM: 512 MB
GraKa: NVIDIA GeForce FX 5200 128 MB

Kann das an der GraKa. liegen ?

Yheeky 14. Jun 2007 17:26

Re: Form mit PNG Skin und VCL Controls
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
nochmal eine Frage :-)
Ich habe 2 Formen auf denen meine Komponenten drauf sind. Jeder der Formen haben eine Form, mit der ich den Hintergrund über das Topic-bekannte Verfahren zeichne.
So, nun folgendes: Beim Start wird Form1 und Form1Maske geöffnet. Form1Maske ist lediglich die Form mit einem transparenten Rand. Wenn ich nun auf Form1 einen Button anklicke, wird Form2 und Form2Maske geöffnet. Wenn ich nun auf Form1 klicke, kommt die Form1 in den Vordergrund, aber Form1Maske bleibt weiterhin ganz hinten in der Reihenfolge. So ergibt sich Effekt 1 im Anfang.
Wenn ich jedoch auf Form1 Maske klicke (z.B. auf die Titelleiste) dann ergibt sich der gewünschte Effekt 2 im Anhang. So sollte es immer sein, auch wenn Form1 den Fokus erhält. Habe schon versucht mit den Ereignissen OnActivate und OnDeactivate rumzuspielen, aber das hat leider nicht den gewünschten Erfolg gebracht. Hat vielleicht einer eine andere oder generell eine Idee, wie ich das Problem lösen kann?

Wäre super!

andresilvaus 19. Jun 2007 17:07

Re: Form mit PNG Skin und VCL Controls
 
GR32.dcu ... FAIL :(

Coder90 17. Jul 2007 22:15

Re: Form mit PNG Skin und VCL Controls
 
Zitat:

Zitat von andresilvaus
GR32.dcu ... FAIL :(

Graphics32 runterladen (Link im ersten Post) und den Bibliothekspfad hinzufügen.
Dann gehts bei mir.

MfG

nlt_virus 31. Jul 2007 22:48

Re: Form mit PNG Skin und VCL Controls
 
Moin alle!

Kann jemand eine einfache PNG Skin ohne VCL Controls machen bitte und so damit die PNG mit ins EXE reinkommt??! Hab die vom Post #6 probiert, aber das ist noch zu kompliziert für mich.

Danke!

Relicted 15. Aug 2008 09:07

Re: Form mit PNG Skin und VCL Controls
 
Liste der Anhänge anzeigen (Anzahl: 2)
sorry fürs ausgraben des alten threads :-) aber ich brauch mal hilfe.
habe eine png erstellt mit transparenten hintergrund und einfach nur ne blaue halbdurchsichtige form drauf.
wenn ich nen weißen hintergrund habe sieht alles fein aus. sobald ich aber nen dunklen hintergrund hab schaut das alles irgendwie komisch aus. er behält in der eigentlich durchsichtigen fläche einen weißen kasten. vielleicht kann ja wer helfen. das ganze ist einfach mir der demo kompiliert:

turboPASCAL 15. Aug 2008 10:32

Re: Form mit PNG Skin und VCL Controls
 
Häng doch bitte mal den Quelltext an, ich sehe da jetzt nicht durch was du gemacht hast. :stupid:

Relicted 15. Aug 2008 10:44

Re: Form mit PNG Skin und VCL Controls
 
arghl falsche zip verwendet. habe den source von Coder90 genommen und damit getestet. Jetzt versuch ich erstmal deinen Source (denke der wird besser funktionieren right?) und wenn ich dann noch Probleme habe schreie ich nochmal :wink:
Manchmal ist das nicht von Vorteil 3 zips zu nehmen und zu versuchen irgendwas damit hin zu bekommen. :wall:

Danke schonmal

miLeRiAm 11. Mai 2009 12:10

Re: Form mit PNG Skin und VCL Controls
 
Hallo,

ich habe das alles gerade ausprobiert.
Mit den integrierten / beigelegten PNGs klappt dies auch wunderbar.

Probiere ich dies allerdings mit dem folgenden:


98 KB
24 Bit PNG
500x300px

Erstellt mit Photoshop.

http://i39.tinypic.com/fp2qnr.png

... klappt dies nicht.

Ideen?

Edit/p.s.:
Keine Fehlermeldung, es wird einfach nicht geleaden.
Wie folgt getestet...

Delphi-Quellcode:
      1: PngImg.LoadFromResourceName(hInstance, 'MYPNGIMAGE2');
ersetzt mit
Delphi-Quellcode:
      1: PngImg.LoadFromFile('C:\blabla.png');

turboPASCAL 11. Mai 2009 17:06

Re: Form mit PNG Skin und VCL Controls
 
Und was soll damit passieren und oder nicht passieren ? :gruebel:

miLeRiAm 11. Mai 2009 17:37

Re: Form mit PNG Skin und VCL Controls
 
Zitat:

Zitat von turboPASCAL
Und was soll damit passieren und oder nicht passieren ? :gruebel:

der skin der form soll sich dem PNG anpassen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz