kostenloser Webspace werbefrei: lima-city


delphi - beliebig geformtes Programmfenster

lima-cityForumProgrammiersprachenDelphi & Pascal

  1. Autor dieses Themas

    f********i

    hi leute,

    wenn man sich beim mediaplayer oder auch winamp skins installiert, haben die programme oft x-beliebige formen. kann mir jemand erkl?ren, wie man sowas bei seinem eigenen programm ebenfalls verwirklichen kann???? z.b. ein programm in form einer nackten frau????


    Gru? Fritziiiii
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. e*****r

    Im Regelfall handelt es sich dabei ledigtlich um ein Bild das durchsichtige Bereiche hat! Die Button und ?hnliches werden in solchen F?llen auch meist durch Bilder ersetzt um keine Stilbruch zu verursachen!


    Elandir


    P.S. Ja das mit dem Visible:=false is mir im Nachhinein auch aufgefallen ^^! Aber ansonsten wars denk ich ok :lol:! Wie gesagt.. bild in die Form.. und dann kann man irgendwie ne durchsichtige Farbe definieren! Kannst die Form nat?rlich wie unten gesagt auch mittels Windowsfunktionen selber kritzeln.. macht aber normal keiner.

    Beitrag ge?ndert am 25.01 07:58 von elandir
  4. m*s

    Im Regelfall handelt es sich dabei ledigtlich um ein Bild das durchsichtige Bereiche hat! Deine eigentliche Form kannst du einfach verstecken (Form1.visible=true) und statt dessen das Bild anzeigen lassen. Die Button und ?hnliches werden in solchen F?llen auch meist durch Bilder ersetzt um keine Stilbruch zu verursachen!


    sry, aber du hast gr??ten Teils vollkommenen Schwachsinn verzapft. Du kannst das Bild eh nur auf einer Form anzeigen lassen, und wenn und diese ausblendest (?brigens mit Visible:= false), wird das Bild ebenfalls unsichtbar.

    aber zur Frage: SetWindowRgn() und CreatePolygonRgn() k?nnte dir weiterhelfen...
  5. Hier is in ner hilfe beschrieben, wie du aus ner bitmapmaske eine belibige Form bekommst

    http://www.swissdelphicenter.ch/de/showcode.php?id=582
  6. o***n

    man k?nnte doch einfach die Transparenzfarbe z.B. auf wei? setzen und dann die Hintergrundfarbe der Form auch auf wei? setzen und dann ein Image einf?gen... alles wei?e wird dann durchsichtig..
  7. das w?re zu einfach, ich glaub kaum, dass das so geht. sonst w?rde es ja daf?r nich son ewig langen quellcode geben in der hilfe siehe oben.
  8. o***n

    hugo1990 schrieb:
    das w?re zu einfach, ich glaub kaum, dass das so geht. sonst w?rde es ja daf?r nich son ewig langen quellcode geben in der hilfe siehe oben.



    also ich habs bei mir in Delphi ausprobiert:
    so gehts am einfachsten:

    Erkl?rung: Das Bild wird in ein Image geladen. Die Hintergrundfarbe des Bildes muss die TransparenzFarbe sein. Die Form wird in die TransparenzFarbe eingef?rbt und diese Farbe wird durchsichtig.


    procedure TForm1.FormCreate(Sender: TObject);
    var TransparenzFarbe: TColor;
    begin

    TransparenzFarbe := clWhite;

    form1.TransparentColor := True;
    form1.TransparentColorValue := TransparenzFarbe;
    form1.Color := TransparenzFarbe;
    form1.BorderStyle := bsNone;
    form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + '\Bild1.bmp');
    form1.Image1.Transparent := False; // wichtig!

    end;
  9. Nagut dann geb ich mich geschlagen, aber warum "einfach", wenn's auch "umst?ndlich" geht. Es f?hren halt viele wege nach Rom.
  10. *Mal auch mein Senf dazugeb*
    Also es is auch m?glich wenn man eine Region als Datei gespeichert hat (gut dazu m?sst man noch extra ein Programm schreiben was diese Region abspeichert. Hierbei lautet das Zauberwort GetRegionData) diese zu laden.

    Hier mal der Beispielcode(zum laden) is also auch ziemlich easy bzw. ?bersichtlich :D

    .
    
    procedure TForm1.FormCreate(Sender: TObject);
              var region :TMemoryStream;
                  rgn    :HRGN;
    begin
         region := TMemoryStream.Create();
         region.LoadFromFile('e:\region.dat');
         rgn := ExtCreateRegion(nil,region.Size,TRgnData(region.Memory^));
         SetWindowRgn(Handle,rgn,true);
         region.Free;
    end;
    
    .



    Beitrag ge?ndert am 12.06.2006 22:13 von funkdoobiest
  11. 0***9

    Noch mal zur TransparentColor: Das ist zwar schön,aber ich glaube,dass es nur ab Windows 2000 geht. Ich hatte mal soetwas gemacht,aber bei Windows ME ging es soweit ich mich entsinnen kann nicht.
  12. d*c

    Ich glaube auch das es erst ab Windows 2009 geht.

    Ich finde die Möglichkeit mit dem Image als Hintergrund ist sehr schlecht. Wenn du ein Formular erstellst, welches rund ist, dann kannst du auch auf eine Ecke klicken, und die Form wird trotzdem aktiviert. Von daher sollte man auf die funktion SetWindowRGN zurückgreifen, welche auch bei Buttons oder Änhlichem funktioniert.

    MfG,

    dic
  13. ist sie nicht ich habs grad ausprobiert:


    mauszeiger auf sichtbarem bild:mauszeiger selektiert prog beim klick

    mauszeiger auf transparenz:mauszeiger selektiert das dahinterliegende delphi beim klick


    sprich: dein argument ist haltlos


    Beitrag geändert: 23.6.2008 20:49:07 von herrrscher
  14. Frage:

    ab welcher Version haben Forms die Eigenschaft transparentcolor?

    Delphi5 kennt sie nicht.
    Da funktioniert nur die Variante mit der Region.

    grüsse,
    limonero
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!