Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Transparentes Formular, sichtbare controls (https://www.delphipraxis.net/47827-transparentes-formular-sichtbare-controls.html)

jaschu 16. Jun 2005 19:49


Transparentes Formular, sichtbare controls
 
Hi!

Lange hab ich nach einem Codeschnipsel gesucht, der das Formular selbst unsichtbar macht, aber alle Controls (Images, Buttons, Labels...) sichtbar bleiben.

Nun hab ich einen gefunden, das Problem ist nur, dass oben ein Stück sichtbar bleibt.
Woran kann das liegen?
Hat jemand eine ähnliche Prozedur?

Danke schonmal!

Lamy


Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
 Var
   frmRegion, tempRegion: HRGN;
   i: Integer;
   Arect: TRect;
 Begin
   frmRegion := 0;
   For I:= 0 To ControlCount - 1 Do Begin
     // create a region for the control
     aRect := Controls[i].BoundsRect;
     // coordinates have to be window-relative, not client area relative
     OffsetRect( aRect, clientorigin.x - left, clientorigin.y - top );
     tempRegion := CreateRectRgnIndirect( aRect );
     // merge the region with the "summary" region we are building
     If frmRegion = 0 Then
       frmRegion := tempRegion
     Else Begin
       CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR );
       DeleteObject( tempRegion );
     End;
   End;
   // create a region for the caption and menu bar and add it to the
   // summary
   tempregion :=
     CreateRectRgn( 0, 0, Width,
                    GetSystemMetrics( SM_CYCAPTION )+
                    GetSystemMetrics( SM_CYSIZEFRAME )+
                    GetSystemMetrics( SM_CYMENU ));

   CombineRgn( frmRegion, frmRegion, tempRegion, RGN_OR );
   DeleteObject( tempRegion );
   SetWindowRgn( handle, frmRegion, true );

end;

jaschu 17. Jun 2005 19:39

Re: Transparentes Formular, sichtbare controls
 
Kann mir denn keiner helfen? :-(


Jaschu

100nF 17. Jun 2005 20:38

Re: Transparentes Formular, sichtbare controls
 
hi,


habe mal bei swissdelphicenter sowas gefunden.
schau dort mal nach

jaschu 18. Jun 2005 16:01

Re: Transparentes Formular, sichtbare controls
 
Nein, bei Swissdelphicenter gibt es nur Codeschnipsel die ALLEs durchtig machen - eben das soll NICHT der Fall sein

Daniel G 18. Jun 2005 16:22

Re: Transparentes Formular, sichtbare controls
 
Mal 'ne blöde Frage:

Welche Delphi - Version hast du? Bei Delphi 7 gibbet nämlich die Eigenschaft "TransparentColor". Die sollte dir helfen...

phlux 18. Jun 2005 16:30

Re: Transparentes Formular, sichtbare controls
 
Hallo :hi:
Vielleicht hilft dir auch folgender Link weiter:
http://www.hwb.com/gruhn/programming...ial/clear.html

Wichtig ist auch, das man bei solchen sachen den BorderStyle der Form auf bsNone setzt!

Mfg phlux :hi:

Schwitzus 18. Jun 2005 16:35

Re: Transparentes Formular, sichtbare controls
 
hi erstmal!
hab schon viel brauchbares gefunden in diesem forum hier, und muss erst mal dank und annerkennung aussprechen :thumb:

mach mal als viertletzten befehl
Delphi-Quellcode:
   tempregion :=
     CreateRectRgn( 0, 0, Width, 0);
weiß nicht ob das das is was du suchst, bei mir war dann nur der button sichtbar :stupid:
das mit der transparent-property is glaub ich so a gschicht, wenn man das formular transparent setzt, wird der button mit transparent auch wenn dieser transparenz von 0% hat

Daniel G 19. Jun 2005 01:10

Re: Transparentes Formular, sichtbare controls
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Schwitzus
das mit der transparent-property is glaub ich so a gschicht, wenn man das formular transparent setzt, wird der button mit transparent auch wenn dieser transparenz von 0% hat

Sicher?

Schwitzus 19. Jun 2005 01:35

Re: Transparentes Formular, sichtbare controls
 
stimmt sry, hatte das mit Alpha verwechselt, da werdn alle Komponenten auf dem Formular automatisch mit transparent

jaschu 20. Jun 2005 13:29

Re: Transparentes Formular, sichtbare controls
 
Liste der Anhänge anzeigen (Anzahl: 1)
Alles klar, so weit, so gut, danke!

Aber jetzt hab ich ein Problem mit Bildern (siehe Anhang)...

Für alle die zu faul sind es sich runterzuladen :zwinker: hier ne Beschreibung:
Der Rosa Rand bleibt um das Bild bestehen.

Kann man das umgehen?

Auf http://www.dsdt.info/jedi/jvcl/komponenten.php gibt es eine Beschreibung der Komponenten.
Darunter auch:

Zitat:

TJvTransForm
Ein weiterer Weg, ein transparentes Fenster zu erhalten (nur die Controls werden sichtbar sein). Achtung, wenn Sie die Größe von Komponenten verändern, müssen Sie diese Komponente deaktivern und dann neu aktivieren, um den Bereich des Fensters zu ändern.
So eine Komponente existiert bei mir aber nicht O_o (Ja, ich HABE JEDI installiert)

Danke schonmal für Antworten!


Lamy

jaschu 21. Jun 2005 07:33

Re: Transparentes Formular, sichtbare controls
 
hat keiner 'ne Idee? =/

Khabarakh 21. Jun 2005 12:40

Re: Transparentes Formular, sichtbare controls
 
Das ist ja keine Bittransparenz mehr. So etwas wirst du mit der VCL nicht schaffen.

Tonic1024 21. Jun 2005 14:00

Re: Transparentes Formular, sichtbare controls
 
Ich verstehe das problem aus deinem Attatchment nicht... ist doch alles transparent (bei mir)

Was mir aufgefallen ist:

Wenn du ein Bild nimmst und das Bild mit Hintergrund gezeigt wird, dann stell doch mal die Eigenschaft >Image1.transparent:=true< ein. Ist das dein Problem? Sonst versuche es doch mal etwas ausführlicher zu beschreiben...


regards

Toni

jaschu 21. Jun 2005 16:20

Re: Transparentes Formular, sichtbare controls
 
Hey, Das Problem liegt um das Bild herum: Da sind, wo das eigentliche Bild halbtransparent sein sollte, pinke Ränder drum. Bei dir nicht? O_0

Khabarakh: Was meinst du?


Jaschu

Tonic1024 22. Jun 2005 07:18

Re: Transparentes Formular, sichtbare controls
 
Mei mir erscheint der Bildhintergrund volltransparent und von Rand keine Spur. Ich sehe meinen Desktop in einem Kasten (dem Formular-Rand) darauf ein stylisches Lautsprecher-Symbol und ein Button in grau.

[Edit]
Er meint, dass Teiltransparenz nicht bitgenau (true/false - sichtbar/unsichtbar) berechnet wird, sondern du brauchst eine Funktion, die die aus dem Farbwert des Pixels des Hintergrundes und dem Farbwert des Pixels des Vordergrundes einen mitelwert berechnet. So wird aus einem Blauen Pixel und einem Grauen Pixel ein neuer, blass-graublauer Pixel. Das kannst du noch gewichten. Um so mehr Hintergrund du reinrechnest um so weniger ist von dem Vordergrund noch zu sehen und umso transparenter wirkt dein Form/Bild/wasauchimmer. Das nennt man Alphablending. Natürlich ist es ein "wenig" Rechenarbeit für den Computer. Darum muss man solche Sachen vorsichtig angehen, sonst laggt das Programm hinterher.
[/Edit]

MfG

Toni


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:48 Uhr.

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