CanvasGadget + SetGadgetAttribute mit #PB_Canvas_Image

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

CanvasGadget + SetGadgetAttribute mit #PB_Canvas_Image

Beitrag 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
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: CanvasGadget + SetGadgetAttribute mit #PB_Canvas_Image

Beitrag 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: )
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten