Seite 1 von 2

ListiconGadget transparent machen?

Verfasst: 18.09.2007 18:40
von PureBasic4.0
Hi Leute

ich möchte den hintergrund eines ListIconGadgets transparent machen. Wie geht das? Die Boardsuche hat nichts ergeben...

Danke,

PureBasic4.0

//edit: Für den Button bräuchte ich es auch noch. Ich offe, dass ich euch hier nicht zu viele umstände mache ;-)

Verfasst: 18.09.2007 18:54
von roherter
Listicongadget -> da bezweifel ich das es geht.
Beim Buttongadget könnte es schon eher funktionieren.

Wofür brauchst du das?? /:->

Verfasst: 18.09.2007 18:56
von PureBasic4.0
dreimal darfst du raten...

ich habe ein Hintergrundbild mit SkinWin eingefügt und möchte jetzt, dass das ListIconGadget und das ButtonGadget so transparent werden, dass man das Hintergrundbild sieht.

Verfasst: 18.09.2007 19:05
von Xaby

Code: Alles auswählen

;/ PB 4.x

If OpenWindow(0, xWin, yWin, 615, 433, "Blubb", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_MinimizeGadget) And CreateGadgetList(WindowID(0)) 
  
  SetWindowLong_(WindowID(0),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|524288) 
  SetLayeredWindowAttributes_(WindowID(0),RGB(255,0,255),0,1) 
  
  StickyWindow(0, 1)
  ListIconGadget(0, 157, 58, 294, 294, "Hallo",100,#PB_ListIcon_GridLines)
  SetGadgetColor(0,#PB_Gadget_BackColor,RGB(255,0,255))
  
  
  ;{- Main Loop 
  
  Repeat 
    Event = WaitWindowEvent() ; Zuverlässigkeit bei Mausbewegung!
    
  Until Event=16  
  
EndIf  
Hoffe, es gefällt dir. Netten Gruß, Folker :allright:

Verfasst: 18.09.2007 19:13
von PureBasic4.0
Danke für den Code, aber das war schon zu Transparent ;-)

Das Window hat ein Hintergrundbild. Und dieses soll sichbar sein (d.h. auch das unter dem ListIconGadget). Nicht der Bildschirm, der hinter dem Window ist.

Ich hoffe, es ist jetzt klarer ;-)

Verfasst: 18.09.2007 19:18
von Xaby
Was von FluidByte damals als ich mal eine Frage hatt :?

Code: Alles auswählen

OpenWindow(0,0,0,400,300,"untitled",#WS_OVERLAPPEDWINDOW | 1) 

CreateGadgetList(WindowID(0))
;/ Gadgets
ButtonGadget(0,100,100,100,20,"MausX")

;/

osi.OSVERSIONINFO 
osi\dwOSVersionInfoSize = SizeOf(OSVERSIONINFO) 
GetVersionEx_(osi) 

If osi\dwPlatformId = #VER_PLATFORM_WIN32_NT 
  SetWindowLong_(WindowID(0),#GWL_EXSTYLE,#WS_EX_LAYERED)    
  SetLayeredWindowAttributes_(WindowID(0),0,120,#LWA_ALPHA) 
EndIf 

While WaitWindowEvent() ! 16 
  
Wend
Und gleich wirst du sagen:

Aber doch nur das Gadget bitte durchsichtig machen, will doch das Hintergrundbild noch sehen ...

Mach ein zweites Fenster mit Borderless.

Das setzt du auf das andere Fenster drauf.

das geht für beide Varianten. Du musst ja nicht deinen Desktop durchscheinen lassen, sondern kannst ja diese Methode bei dem oberen deiner Fenster anwenden ...

Meine Antwort ist also schon irgendwie richtig :mrgreen:

:allright:

Verfasst: 18.09.2007 19:26
von Xaby

Code: Alles auswählen


If OpenWindow(0, 0, 0, 615, 433, "Blubb", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_MinimizeGadget) 
  
  CreateImage(0,600,400)
  StartDrawing(ImageOutput(0))
    Circle(100,100,40,RGB(255,0,0))
  
  StopDrawing()
  
  CreateGadgetList(WindowID(0))
  ImageGadget(1,0,0,600,400,ImageID(0))
  
  OpenWindow(1,WindowX(0)+5, WindowY(0)+50, 300, 300, "Blubb", #PB_Window_BorderLess,WindowID(0)) 
  CreateGadgetList(WindowID(1)) 
  SetWindowLong_(WindowID(1),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|524288) 
  SetLayeredWindowAttributes_(WindowID(1),RGB(255,0,255),0,1) 
  
  StickyWindow(0, 1)
  ListIconGadget(0, 0, 0, 300, 300, "Hallo",100,#PB_ListIcon_GridLines)
  SetGadgetColor(0,#PB_Gadget_BackColor,RGB(255,0,255))
  
  
  ;{- Main Loop 
  
  Repeat 
    Event = WaitWindowEvent() ; Zuverlässigkeit bei Mausbewegung!
    
    IF Event=#PB_Event_SizeWindow or Event=#PB_Event_MoveWindow
      
      ResizeWindow(1,WindowX(0)+5,WindowY(0)+50,#PB_Ignore,#PB_Ignore)
      
    EndIf
    
  Until Event=16  
  
EndIf  

Verfasst: 18.09.2007 19:40
von roherter
Ja ich denke auch das das die beste lösung ist. :allright:

Verfasst: 18.09.2007 20:03
von Xaby
fehlgeschlagener Versuch, wäre aber schön gewesen ...

Code: Alles auswählen

If OpenWindow(0, 0, 0, 615, 433, "Blubb", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_MinimizeGadget) 
  
  CreateImage(0,600,400)
  StartDrawing(ImageOutput(0))
  Circle(100,100,40,RGB(255,0,0))
  
  StopDrawing()
  
  CreateGadgetList(WindowID(0))
  ImageGadget(0,0,0,600,400,ImageID(0))
  
  ContainerGadget(1,WindowX(0)+5, WindowY(0)+50, 300, 300,#PB_Container_BorderLess) 
  
  SetWindowLong_(GadgetID(1),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|524288) 
  SetLayeredWindowAttributes_(GadgetID(1),RGB(255,0,255),0,1) 
  
  
  ListIconGadget(2, 0, 0, 300, 300, "Hallo",100,#PB_ListIcon_GridLines)
  
  CloseGadgetList()
  
  SetGadgetColor(2,#PB_Gadget_BackColor,RGB(255,0,255))
  
  
  StickyWindow(0, 1)
  
  ;{- Main Loop 
  
  Repeat 
    Event = WaitWindowEvent() ; Zuverlässigkeit bei Mausbewegung!
    
    IF Event=#PB_Event_SizeWindow or Event=#PB_Event_MoveWindow
      
      ;ResizeWindow(1,WindowX(0)+5,WindowY(0)+50,#PB_Ignore,#PB_Ignore)
      
    EndIf
    
  Until Event=16  
  
EndIf  
:roll:

Verfasst: 18.09.2007 20:06
von PureBasic4.0
@Xaby: Jetzt ist das ListIconGadget aber nicht mehr transparent, sondern hat eine lilane Hintergrundfarbe. Wenn ich

SetGadgetColor(2,#PB_Gadget_BackColor,RGB(255,0,255))

aus dem Code verbanne, ist es weiß, aber nicht mehr transparent, wie vorher.