![]() |
Delphi-Version: 5
AlphaBlend auf normale Controls
Heyho ;)
Ich habe auf meiner Form mehrere Controls, genauer gesagt abgeleitete Panels, die ich gerne langsam ausblenden möchte. Also nicht einfach Panel.Visible := false; sondern fließend. Bei der Form an sich geht das ja mit AlphaBlend, kann man dieses Konzept auch auf normale Komponenten anwenden? Wenn ja, wie? Gibts evtl ne andere Möglichkeit, AlphaBlend quasi zu simulieren? Hoffe jmd kann mir helfen, danke im voraus! :) LG |
AW: AlphaBlend auf normale Controls
Soweit ich weiß geht das mit den WinForms leider nicht. Selbst die Glass-Komponenten von TMS funktionieren nicht so wie man es sich denkt.
|
AW: AlphaBlend auf normale Controls
Mhm, das wäre natürlich schade ...
Aber die Form macht das doch mit AlphaBlend auch. Wenn die das kann muss sie es ja irgendwie machen (immerhin werden dabei ja auch die Controls transparent), das heißt doch das es eigentlich eine Möglichkeit geben muss ... Bei Bitmaps gehts ja (wenn ich mich nicht irre auch) ... hmmm ... Gibts evtl ne Möglichkeit, das zu simulieren wenn der Hintergrund einfarbig ist, und man dessen Farbe kennt? |
AW: AlphaBlend auf normale Controls
sieh dir mal
![]() |
AW: AlphaBlend auf normale Controls
Du kannst nur Controls transparent bekommen die nicht von TWincontrol abgeleitet sind.
Hier kannst Du beliebige Controls basteln, diese können aber niemals Parent anderer Controls sein. |
AW: AlphaBlend auf normale Controls
Du kannst sehr wohl Panels Transparent faden.
Vorrausgesetzt es ist eine von dir eigens erstellte Komponente in NONVCL Ich habs gemacht und funktioniert sehr gut.. gruss |
AW: AlphaBlend auf normale Controls
@EWeiss
hey, lässt Du mal einen Fetzen Code rüberwachsen?:-D |
AW: AlphaBlend auf normale Controls
Erstmal danke für die zahlreichen Antworten!
@ WM_Close: Das ganze sieht genau nach dem aus, was ich brauche. So Sachen wie AnimateWindow(Panel.Handle,200,AW_Center or AW_Hide); funktionieren auch super, es gibt aber ein Problem: AW_Blend kann nur auf top level windows angewendet werden, also auf Windows ohne Parent. Aber wie kann ich nen Panel auf die Form zeichnen, ohne nen Parent anzugeben?? mhmmm ... @ EWeiss: Was kann ich denn in eigenen Panels einstellen, das ich nicht durch Ableitung eines bereits vorhandenen Panels ergänzen kann? @ Bummi: /sign, bin ich auch dafür! :) |
AW: AlphaBlend auf normale Controls
Zitat:
Kann dir aber bei bedarf meinen Code zusenden bzw.. müßtest du von meinem Server runterladen. Bild sieht nicht so gut aus das Forum hier konvertiert den Kram nach .JPG Zitat:
Zitat:
Delphi-Quellcode:
EffectPanel := TSkinPanel.Create(hMain, SK_FOLDER + 'Panel.png', '', 643, 48, 158, 366, ID_EFFECTPANEL, 0); SetAnchorMode(EffectPanel.Handle, ANCHOR_RIGHT); SetZorder(EffectPanel.Handle, HWND_TOP); PanelEffectHandle := EffectPanel.Handle;
Delphi-Quellcode:
gruss
constructor TSkinPanel.Create(hOwner: HWND; FullpathImageName: string;
skLabel: PAnsiChar; x, y, xW, yH, ButID, StateMax: integer); var wc: TWndClassEx; zClass: PAnsiChar; begin with SkinEngine do begin zClass := SKPANEL; wc.cbSize := SIZEOF(wc); IsInitialized := GetClassInfoEx(skInstance, zClass, wc); if IsInitialized = False then begin wc.cbSize := SIZEOF(wc); wc.style := CS_HREDRAW or CS_VREDRAW or CS_DBLCLKS or CS_PARENTDC; wc.lpfnWndProc := @PanelProc; wc.cbClsExtra := 0; wc.cbWndExtra := EXTEND_EXTRA * 4; wc.hInstance := skInstance; wc.hIcon := 0; wc.hCursor := 0; wc.hbrBackground := 0; wc.lpszMenuName := nil; wc.lpszClassName := zClass; wc.hIconSm := wc.hIcon; if RegisterClassEx(wc) <> 0 then IsInitialized := True; end; if IsInitialized = True then begin // Erstelle das GDIPLUS image von Datei Img := AddResource(PAnsiChar(FullpathImageName)); if Img <> 0 then begin // Hole die Thumb GDIPLUS image größe GetImageSize(Img, imgW, imgH); Style := WS_CHILD or WS_VISIBLE or WS_TABSTOP; FHPanel := CreateWindowEx(WS_EX_TRANSPARENT, SKPANEL, '', Style, x, y, xW, yH, hOwner, ButID, skInstance, nil); if FHPanel <> 0 then begin if StateMax < 1 then StateMax := 1; // Speichere das Image Handle in die Property SetImageProperty(FHPanel, PROP_STYLE, BS_GROUPBOX); SetImageProperty(FHPanel, PROP_IMAGE_BACK, Img); SetImageProperty(FHPanel, PROP_STATEMAX, StateMax); end else // Image löschen wenn Fehler DeleteResource(Img); end; end; end; end; |
AW: AlphaBlend auf normale Controls
Was passiert bei dem Code, wenn ich unter dem transparenten Panel einen Button platziere? Ich habe bisher noch nirgends gesehen, dass ein Panel wirklich transparent dargestellt werden kann -- wenn das funktionieren würde wäre das echt genial für eine Komponente von mir...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz