AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Transparenter Frame?!

Ein Thema von Flodding · begonnen am 6. Mär 2009 · letzter Beitrag vom 9. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#1

Transparenter Frame?!

  Alt 6. Mär 2009, 23:16
Guten Abend

Wiedermal bin ich seit Stunden in gange und versuche diesesmal einen Frame durchsichtig zu machen... also den hintergrunde verschwinden zu lassen, aber die komponenten die drauf sind sollen sichtbar sein... sprich: ein Frame mit durchsichtigem hintergrund

ich hab viel gesucht nach fertigen komponenten bei torry und auch bei delphi32 und vclcomponents und vieeeele foren durchstöbert...

ich habe eine einzige quelle gefunden die mir plausibel erscheint... nur versteh ich nicht recht was ich machen soll... deshelb frag ich euch einfach mal in der hoffnung einer kann helfen

hier die quelle:

Zitat:
OK, after few days I'll amswer to that myself. It took me so long to figure it out.
I found it accidentaly - while browsing various examples of transparent windows. At that moment I had a working example of frame with wx.TRANSPARENT_WINDOW style set and had to redraw it often. In any other way there still was frame background. But...
If You'll set an extra style for the window using ctypes, all background drawing job goes to windows. So, I simply set WS_EX_LAYERED style. Window isn't set to be transparent at all. But bingo - there is no background and I can paint anything I want(semi-transparent background rectangles, opaque images and text etc..). And, what's most important - I don't need to redraw the frame. I shoot it and don't care about it anymore. Sad, but this works only under windows. But it's my goal for the moment...
ich habe mich gefragt was ist "ctypes", wx.TRANSPARENT_WINDOW und WS_EX_LAYERED und wo muss ich verwenden!?
Flo
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Transparenter Frame?!

  Alt 6. Mär 2009, 23:20
Also WS_EX_LAYERED kannst du z.B. mit SetWindowLong setzen, wie das geht siehst du z.B. hier:
http://www.delphipraxis.net/internal...t.php?t=119359
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Transparenter Frame?!

  Alt 6. Mär 2009, 23:27
komm ich nicht mit klar
Flo
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#4

Re: Transparenter Frame?!

  Alt 6. Mär 2009, 23:36
Why not?
Delphi-Quellcode:
Beispielaufruf, um das Fenster mit dem Handle 67034 mit einer AlphaBlendValue von 150 transparent zu schalten:

procedure TForm1.Button2Click(Sender: TObject);
begin
  MakeWindowTransparent(67034, 150);
end;
Dein Frame hat auch ein Handle, z.B. Frame1.Handle - das musst du anstelle von 67034 übergeben, dann sollte es funktionieren.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Transparenter Frame?!

  Alt 6. Mär 2009, 23:41
Nein, tut es nicht, ich habe es gerade ausprobiert.
Was wx.TRANSPARENT_WINDOW ist müsste ich mal schauen, denn abgesehen von WS_EX_LAYERED soll das ja auch notwendig sein.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Transparenter Frame?!

  Alt 6. Mär 2009, 23:44
wenn ich den frame mit alphablend durchsichtig mache dann werden auch die kompos die drauf sind durchsichtig

diese funktion ist um fremden fenstern alphablends zu verpassen
Flo
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#7

Re: Transparenter Frame?!

  Alt 6. Mär 2009, 23:47
What a pity!
Hab's natürlich nicht ausprobiert, sorry folks!
Ralph
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Transparenter Frame?!

  Alt 7. Mär 2009, 00:20
Okay hab noch ne runde gesucht... konnts einfach nicht sein lassen... bin auf eine quelle gestoßen und habs letztendlich mit viel probieren geschafft

Natürlich für die nachwelt, denn ich habe echt oft Fragen danach gefunden

Also hier der Code für nen "Semi-Transparent-Frame"

Delphi-Quellcode:
unit unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TFrame1 = class(TFrame)
    Button1: TButton;
    procedure CreateParams(var Params: TCreateParams);override;
    procedure PaintWindow(DC: HDC); override;
  private
    { Private declarations }
  public
    constructor Create(AOwner:TComponent);override;
    { Public declarations }
  end;

var
  Frame1: TFrame1;

implementation

{$R *.dfm}

constructor TFrame1.Create(AOwner: TComponent);
begin
  inherited;
  Brush.Style := bsClear;
end;

procedure TFrame1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;

procedure TFrame1.PaintWindow(DC: HDC);
begin
// Muss stehen bleiben :D
end;

end.
endlich hab ich auch mal was beigesteuert was es nicht gab
Flo
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Transparenter Frame?!

  Alt 7. Mär 2009, 00:54
sorry fürs doppelpost, aber irgendwie haut das doch nicht so richtig hin...

wenn der frame geladen wird, dann ist es genauso, wie es sein soll... aber ich habe ja durchsichtige buttons auf dem "semi-frame" und wenn ich jetzt mit der maus über die buttons fahre, dann wird der bereich in dem der button ist nach dem verlassen weiss und bleibt es auch... selbst wenn ich das mit timer wieder neu machen lasse...

Delphi-Quellcode:
constructor TFrame3.Create(AOwner: TComponent);
begin
  inherited;
  Brush.Style := bsClear;
end;

procedure TFrame3.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;

procedure TFrame3.PaintWindow(DC: HDC);
begin
// Muss stehen bleiben :D
end;

procedure TFrame3.Timer1Timer(Sender: TObject);
var Params: TCreateParams;
begin
  inherited;
  Brush.Style := bsClear;
  Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;
Flo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Transparenter Frame?!

  Alt 7. Mär 2009, 08:38
Es wird bei Veränderungen auch nicht neu gezeichnet
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 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