Seite 1 von 1

CanvasGadget + SetGadgetAttribute mit #PB_Canvas_Image

Verfasst: 12.02.2012 17:29
von hjbremer
Hier mal eine kleine Spielerei mit dem Canvasgadget

In der Hilfe heißt es unter SetGadgetAttribute
#PB_Canvas_Image
Weist dem CanvasGadget die angegebene ImageID zu ...
Nur leider steht nirgends das das Image ein BMP sein muß, oder mit CreateImage erstellt worden sein muß.
Ein Ico funktioniert nicht.

Zu sehen wenn man im Code bei dem 1. SetGadgetAttribute direkt hinter CanvasGadget, statt imgnr2 die imgnr1 nimmt

Muß das so sein, ist das ein Bugilein oder ist die Hilfe ungenau ?

Code: Alles auswählen

fontnr = LoadFont(#PB_Any, "", 8)
imgnr1 = LoadImage(#PB_Any, #PB_Compiler_Home + "Examples\Sources\Data\cdplayer.ico")
imgnr2 = LoadImage(#PB_Any, #PB_Compiler_Home + "Examples\Sources\Data\purebasic.bmp")

breite = ImageWidth(imgnr2)
hoehe  = ImageHeight(imgnr2)

imgnr3 = CreateImage(#PB_Any, breite, hoehe)
StartDrawing(ImageOutput(imgnr3))
   DrawingMode(#PB_2DDrawing_Gradient)     
   BackColor (#Yellow)
   FrontColor($9BC2FF)
   ;LinearGradient(0, 0, 20, 20)
   LinearGradient(0, 0, 140, 20)
   Box(0, 0, breite, hoehe)
   DrawImage(ImageID(imgnr1), 3, 2)
   DrawingMode(#PB_2DDrawing_Transparent )     
   DrawingFont(FontID(fontnr))
   FrontColor(#Black)
   DrawText(34, 4,"Rechtsclick für")
   DrawText(40, 19,"Einstellungen")
   StopDrawing()  
   FreeFont(fontnr)

OpenWindow(0, 0, 0, 220, 220, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

CanvasGadget(0, 10, 10, breite, hoehe)      
SetGadgetAttribute(0, #PB_Canvas_Image, ImageID(imgnr2))

Repeat
   Event = WaitWindowEvent()
   
   If Event = #PB_Event_Gadget And EventGadget() = 0 
      
      If EventType() = #PB_EventType_MouseEnter
         SetGadgetAttribute(0, #PB_Canvas_Image, ImageID(imgnr3))
         
      ElseIf EventType() = #PB_EventType_MouseLeave
         SetGadgetAttribute(0, #PB_Canvas_Image, ImageID(imgnr2))
         
      ElseIf EventType() = #PB_EventType_RightClick
         CreatePopupMenu(0)
         MenuItem(1, "Farben")
         MenuItem(2, "Fonts")
         MenuItem(3, "etc")
         DisplayPopupMenu(0, WindowID(0))   
      EndIf
      
   EndIf    
   
Until Event = #PB_Event_CloseWindow

Re: CanvasGadget + SetGadgetAttribute mit #PB_Canvas_Image

Verfasst: 12.02.2012 18:08
von ts-soft
Da ist die Hilfe wohl ungenau. ICO wird nicht voll unterstützt. Es wird nur unter Windows in so weit Unterstützt, das man icons
für Toolbars, ListIcon usw. nutzen kann. Icons können weder gespeichert noch erstellt werden (ausser mit API :wink: )