ButtonGadgetEx - Images als Button

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

ButtonGadgetEx - Images als Button

Beitrag von Lambda »

guten abend :)

habe noch nie was mit dem CanvasGadget gemacht und wollte eine alternative für ein button durch ein ImageGadget. sollte sich wie ein windows button verhalten.

nichts besonderes aber hier mal der code^^


edit: jetzt auch als toggle button.. ein image im deaktivierten zustand braucht man auch nicht

Code: Alles auswählen

EnableExplicit

UsePNGImageDecoder()
CatchImage(0, ?ImageButton0, 848)
CatchImage(1, ?ImageButton1, 865)
CatchImage(2, ?ImageButton2, 889)

Structure gadgetex
  Pressed.i
  Disabled.i
  
  toggle.i
  toggled.i
  
  ImageNormal.i
  ImageOver.i
  ImagePressed.i
  
  FACE.l
EndStructure

Enumeration
  #ButtonGadgetEx_Entered
  #ButtonGadgetEx_Released
  #ButtonGadgetEx_Pressed
EndEnumeration

Procedure GrayscaleCallback(x, y, TopColor, BottomColor)
  Define Gray.i
  Gray = Red(TopColor)*0.56+Green(TopColor)*0.33+Blue(TopColor)*0.11+Alpha(BottomColor)
  ProcedureReturn Gray<<16+Gray<<8+Gray<<24+Gray
EndProcedure
Procedure EventGadgetEx(GadgetID)
  Protected *GadgetEx.gadgetex = GetGadgetData(GadgetID)
  
  If *GadgetEx\Disabled=#False
    If EventType() = #PB_EventType_MouseEnter
      If *GadgetEx\toggle=#True And *GadgetEx\toggled=#False
        StartDrawing(CanvasOutput(GadgetID))
          Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          DrawImage(ImageID(*GadgetEx\ImageOver), 0, 0)
          DrawImage(ImageID(*GadgetEx\ImageOver), 0, 0)
        StopDrawing()
      ElseIf *GadgetEx\toggle=#False
        StartDrawing(CanvasOutput(GadgetID))
          Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          DrawImage(ImageID(*GadgetEx\ImageOver), 0, 0)
          DrawImage(ImageID(*GadgetEx\ImageOver), 0, 0)
        StopDrawing()
      EndIf
      ProcedureReturn #ButtonGadgetEx_Entered
    ElseIf EventType() = #PB_EventType_MouseLeave
      If *GadgetEx\toggle=#True And *GadgetEx\toggled=#False
        StartDrawing(CanvasOutput(GadgetID))
          Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          DrawImage(ImageID(*GadgetEx\ImageNormal), 0, 0)
          DrawImage(ImageID(*GadgetEx\ImageNormal), 0, 0)
        StopDrawing()
      ElseIf *GadgetEx\toggle=#False
        StartDrawing(CanvasOutput(GadgetID))
          Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          DrawImage(ImageID(*GadgetEx\ImageNormal), 0, 0)
          DrawImage(ImageID(*GadgetEx\ImageNormal), 0, 0)
        StopDrawing()
      EndIf
      ProcedureReturn #ButtonGadgetEx_Released
    ElseIf EventType() = #PB_EventType_LeftButtonDown
      *GadgetEx\Pressed=#True
      StartDrawing(CanvasOutput(GadgetID))
        Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
        DrawingMode(#PB_2DDrawing_AlphaBlend)
        DrawImage(ImageID(*GadgetEx\ImagePressed), 0, 0)
      StopDrawing()
      ProcedureReturn -1
    ElseIf EventType() = #PB_EventType_LeftButtonUp
      *GadgetEx\Pressed=#False
      
      ; If *GadgetEx\toggle=#False
      StartDrawing(CanvasOutput(GadgetID))
        Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
        DrawingMode(#PB_2DDrawing_AlphaBlend)
        DrawImage(ImageID(*GadgetEx\ImageNormal), 0, 0)
      StopDrawing()
      
      ;EndIf
      
      If  GetGadgetAttribute(GadgetID, #PB_Canvas_MouseX)>0 And GetGadgetAttribute(GadgetID, #PB_Canvas_MouseY)>0 And GetGadgetAttribute(GadgetID, #PB_Canvas_MouseX)<GadgetWidth(GadgetID) And GetGadgetAttribute(GadgetID, #PB_Canvas_MouseY)< GadgetHeight(GadgetID)
        
        If *GadgetEx\toggle=#True
          *GadgetEx\toggled!1
        EndIf
        
        If *GadgetEx\toggle=#True And *GadgetEx\toggled=#True
          StartDrawing(CanvasOutput(GadgetID))
            Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
            DrawingMode(#PB_2DDrawing_AlphaBlend)
            DrawImage(ImageID(*GadgetEx\ImagePressed), 0, 0)
          StopDrawing()
        Else
          StartDrawing(CanvasOutput(GadgetID))
            Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
            DrawingMode(#PB_2DDrawing_AlphaBlend)
            DrawImage(ImageID(*GadgetEx\ImageOver), 0, 0)
          StopDrawing()
        EndIf
        ProcedureReturn #ButtonGadgetEx_Pressed
      EndIf
    ElseIf EventType() = #PB_EventType_MouseMove
      If GetGadgetAttribute(GadgetID, #PB_Canvas_MouseX)<0 Or GetGadgetAttribute(GadgetID, #PB_Canvas_MouseY)<0 Or GetGadgetAttribute(GadgetID, #PB_Canvas_MouseX)>GadgetWidth(GadgetID) Or GetGadgetAttribute(GadgetID, #PB_Canvas_MouseY)> GadgetHeight(GadgetID) Or *GadgetEx\Pressed=#False
        
        If *GadgetEx\Pressed=#True
          If *GadgetEx\toggle=#True And *GadgetEx\toggled=#True
            StartDrawing(CanvasOutput(GadgetID))
              Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
              DrawingMode(#PB_2DDrawing_AlphaBlend)
              DrawImage(ImageID(*GadgetEx\ImagePressed), 0, 0)
            StopDrawing()
          Else
            StartDrawing(CanvasOutput(GadgetID))
              Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
              DrawingMode(#PB_2DDrawing_AlphaBlend)
              DrawImage(ImageID(*GadgetEx\ImageNormal), 0, 0)
            StopDrawing()
          EndIf
          ProcedureReturn #ButtonGadgetEx_Released
        EndIf
      Else
        StartDrawing(CanvasOutput(GadgetID))
          Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          DrawImage(ImageID(*GadgetEx\ImagePressed), 0, 0)
        StopDrawing()
      EndIf
    EndIf
  EndIf
  
EndProcedure
Procedure GadgetToggleEx(GadgetID, state)
  Protected *GadgetEx.gadgetex = GetGadgetData(GadgetID)
  *GadgetEx\toggle = state
EndProcedure
Procedure GetGadgetStateEx(GadgetID)
  Protected *GadgetEx.gadgetex = GetGadgetData(GadgetID)
  ProcedureReturn *GadgetEx\toggled
EndProcedure
Procedure SetGadgetStateEx(GadgetID, state)
  Protected *GadgetEx.gadgetex = GetGadgetData(GadgetID)
  *GadgetEx\toggled = state
  
  If state=#True
    StartDrawing(CanvasOutput(GadgetID))
      Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
      DrawingMode(#PB_2DDrawing_AlphaBlend)
      DrawImage(ImageID(*GadgetEx\ImagePressed), 0, 0)
    StopDrawing()
  Else
    StartDrawing(CanvasOutput(GadgetID))
      Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
      DrawingMode(#PB_2DDrawing_AlphaBlend)
      DrawImage(ImageID(*GadgetEx\ImageNormal), 0, 0)
    StopDrawing()
  EndIf
EndProcedure
Procedure DisableGadgetEx(GadgetID, state)
  
  Protected *GadgetEx.gadgetex = GetGadgetData(GadgetID)
  
  DisableGadget(GadgetID, state)
  If state=#True
    StartDrawing(CanvasOutput(GadgetID))
      Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
      DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_CustomFilter)
      CustomFilterCallback(@GrayscaleCallback())
      If *GadgetEx\toggled=#True
        DrawImage(ImageID(*GadgetEx\ImagePressed), 0, 0)
      Else
        DrawImage(ImageID(*GadgetEx\ImageNormal), 0, 0)
      EndIf
    StopDrawing()
  Else
    StartDrawing(CanvasOutput(GadgetID))
      Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
      DrawingMode(#PB_2DDrawing_AlphaBlend)
      If *GadgetEx\toggled=#True
        DrawImage(ImageID(*GadgetEx\ImagePressed), 0, 0)
      Else
        DrawImage(ImageID(*GadgetEx\ImageNormal), 0, 0)
      EndIf
    StopDrawing()
  EndIf
EndProcedure

Procedure ButtonGadgetEx(GadgetID, x, y, Width, Height, ImageNormal, ImageOver, ImagePressed, color)
  
  CanvasGadget(GadgetID, x, y, Width, Height)
  Protected *GadgetEx.gadgetex = AllocateMemory(SizeOf(gadgetex))
  SetGadgetData(GadgetID,*GadgetEx)
  
  *GadgetEx\ImageNormal = ImageNormal
  *GadgetEx\ImageOver = ImageOver
  *GadgetEx\ImagePressed = ImagePressed
  
  *GadgetEx\FACE = color
  
  StartDrawing(CanvasOutput(GadgetID))
    Box(0, 0, GadgetWidth(GadgetID), GadgetHeight(GadgetID), *GadgetEx\FACE)
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    DrawImage(ImageID(ImageNormal), 0, 0)
  StopDrawing()
EndProcedure



OpenWindow(0, 0, 0, 250, 120, "ButtonGadgetEx", #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_TitleBar)
UseGadgetList(WindowID(0))
ButtonGadgetEx(0, 20, 10, 26, 17, 0, 1, 2, GetSysColor_(#COLOR_3DFACE))
ButtonGadget(1, 10, 40, 100, 20, "Disable", #PB_Button_Toggle)
ButtonGadget(2, 10, 65, 100, 20, "Toggle", #PB_Button_Toggle)

CreateStatusBar(0, WindowID(0))
AddStatusBarField(100)


Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      End
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
          Select EventGadgetEx(0)
            Case #ButtonGadgetEx_Entered
              If GetGadgetStateEx(0)=0
                SetWindowTitle(0, "ButtonGadgetEx - Over ")
              Else
                SetWindowTitle(0, "ButtonGadgetEx - Over/Toggled")
              EndIf
              
            Case #ButtonGadgetEx_Released
              StatusBarText(0, 0, "")
              SetWindowTitle(0, "ButtonGadgetEx")
            Case #ButtonGadgetEx_Pressed
              StatusBarText(0, 0, "Pressed")
          EndSelect
        Case 1
          DisableGadgetEx(0, GetGadgetState(1)!0)
        Case 2
          GadgetToggleEx(0, GetGadgetState(2)!0)
      EndSelect
  EndSelect
  
ForEver



DataSection
  ImageButton0:
  Data.b $89,$50,$4E,$47,$0D,$0A,$1A,$0A,$00,$00,$00,$0D,$49,$48,$44,$52,$00,$00,$00,$1A
  Data.b $00,$00,$00,$11,$08,$06,$00,$00,$00,$C3,$8D,$BC,$0D,$00,$00,$00,$09,$70,$48,$59
  Data.b $73,$00,$00,$0B,$13,$00,$00,$0B,$13,$01,$00,$9A,$9C,$18,$00,$00,$00,$04,$67,$41
  Data.b $4D,$41,$00,$00,$AF,$C8,$37,$05,$8A,$E9,$00,$00,$00,$19,$74,$45,$58,$74,$53,$6F
  Data.b $66,$74,$77,$61,$72,$65,$00,$41,$64,$6F,$62,$65,$20,$49,$6D,$61,$67,$65,$52,$65
  Data.b $61,$64,$79,$71,$C9,$65,$3C,$00,$00,$02,$CD,$49,$44,$41,$54,$78,$DA,$BC,$55,$4D
  Data.b $68,$13,$41,$14,$FE,$66,$FF,$C8,$6F,$4D,$29,$56,$69,$29,$06,$8D,$5A,$41,$B0,$58
  Data.b $0F,$0A,$15,$2F,$7A,$E9,$29,$1E,$44,$44,$0F,$22,$78,$13,$9A,$96,$A2,$85,$62,$2D
  Data.b $FE,$40,$45,$6C,$A8,$54,$FC,$41,$6F,$05,$AF,$01,$EB,$41,$44,$D0,$43,$D5,$AB,$78
  Data.b $28,$48,$5A,$43,$A9,$B4,$A8,$D5,$D6,$AC,$69,$9A,$CD,$EE,$FA,$66,$36,$89,$59,$93
  Data.b $2D,$22,$E2,$83,$B7,$33,$B3,$F3,$DE,$7E,$EF,$7D,$EF,$CD,$2C,$F0,$9F,$84,$3D,$3D
  Data.b $72,$78,$8F,$6D,$59,$29,$DB,$B6,$A2,$B0,$6D,$70,$E5,$83,$33,$3A,$6B,$AF,$F9,$FA
  Data.b $FB,$28,$BF,$CB,$80,$B1,$B8,$C2,$14,$39,$AE,$06,$1B,$A2,$9B,$0F,$1D,$74,$8C,$4C
  Data.b $13,$04,$EC,$72,$AC,$16,$FB,$B7,$35,$4A,$41,$39,$13,$FE,$A4,$D1,$72,$C0,$EC,$62
  Data.b $11,$0B,$CF,$5F,$44,$0D,$5D,$8F,$2B,$92,$A6,$21,$D2,$BE,$13,$81,$D6,$16,$58,$6B
  Data.b $6B,$28,$E6,$72,$0E,$98,$6D,$95,$7D,$FF,$40,$6C,$D7,$D4,$09,$D2,$12,$DF,$09,$6F
  Data.b $8D,$62,$79,$FA,$3D,$08,$48,$25,$02,$19,$CC,$D5,$1C,$B2,$33,$69,$DA,$37,$FF,$69
  Data.b $6D,$78,$C0,$1C,$43,$91,$55,$55,$84,$61,$64,$BF,$C3,$2A,$AC,$D5,$18,$A6,$57,$B2
  Data.b $95,$B9,$5F,$91,$D1,$1A,$0C,$54,$D6,$1F,$7F,$E4,$B0,$5A,$FC,$15,$58,$6C,$43,$B8
  Data.b $B6,$09,$18,$1C,$20,$4E,$1D,$07,$B2,$0A,$05,$58,$66,$B1,$C6,$F0,$6B,$30,$8C,$93
  Data.b $83,$97,$10,$0A,$85,$90,$4E,$A7,$F1,$66,$3C,$89,$5D,$01,$0D,$D3,$B9,$02,$F6,$9F
  Data.b $EB,$45,$2C,$16,$2B,$BD,$1F,$AD,$EB,$CF,$91,$64,$55,$83,$54,$A6,$CE,$32,$0A,$54
  Data.b $3C,$A3,$46,$3B,$CD,$55,$4C,$5C,$1D,$86,$AE,$EB,$E2,$A3,$BB,$4F,$9F,$C5,$D4,$D2
  Data.b $8A,$0B,$E4,$F5,$D8,$0D,$B4,$6B,$52,$5D,$7F,$94,$32,$92,$24,$A2,$8E,$49,$94,$13
  Data.b $45,$E3,$A5,$9D,$86,$8E,$89,$CB,$43,$02,$AC,$A3,$A3,$03,$67,$6E,$DE,$AA,$80,$BC
  Data.b $4A,$8E,$10,$08,$F3,$F4,$65,$94,$44,$85,$BA,$FC,$97,$65,$14,$96,$BE,$21,$3B,$3B
  Data.b $EB,$59,$D4,$36,$D2,$BB,$03,$03,$E8,$1F,$1F,$17,$34,$72,$79,$34,$70,$01,$7B,$E7
  Data.b $E7,$F1,$69,$9D,$66,$D0,$1A,$23,$D0,$22,$11,$A7,$EB,$98,$A4,$40,$0E,$05,$A1,$36
  Data.b $34,$78,$3A,$CC,$F8,$7C,$88,$27,$12,$AE,$77,$27,$46,$AE,$E3,$59,$5F,$2F,$B6,$E5
  Data.b $F3,$9E,$7E,$72,$C0,$5F,$CA,$88,$53,$E7,$53,$20,$A9,$8A,$68,$F1,$7A,$F2,$59,$51
  Data.b $70,$A0,$A7,$4F,$D0,$B5,$B8,$B8,$88,$27,$0F,$1F,$E0,$78,$4F,$42,$AC,$31,$9A,$C4
  Data.b $CB,$E1,$21,$6C,$67,$F5,$81,$24,$F2,$A5,$4B,$81,$DA,$9B,$A8,$93,$7C,$7E,$20,$18
  Data.b $A4,$86,$A8,$6D,$6F,$DE,$C2,$4D,$47,$8F,$89,$DA,$F0,$1A,$A5,$C6,$92,$54,$B3,$3C
  Data.b $26,$AE,$5D,$C1,$A9,$C1,$8B,$02,$4C,$EF,$3F,$8F,$CC,$BD,$DB,$AE,$D6,$2F,$8B,$65
  Data.b $14,$85,$0A,$EA,$54,$32,$E0,$B5,$62,$B6,$FB,$B0,$E6,$C8,$60,$CE,$17,$C2,$46,$3A
  Data.b $5F,$53,$93,$8F,$91,$79,$F7,$16,$5D,$8D,$FC,$AC,$84,$D1,$45,$CF,$C9,$FB,$77,$D0
  Data.b $B6,$A3,$5D,$D8,$CE,$35,$35,$A3,$C5,$AF,$22,$40,$CC,$54,$8B,$91,$D5,$51,$20,$15
  Data.b $D4,$71,$1E,$35,$AA,$8F,$A4,$CA,$2E,$23,$1F,$69,$37,$9F,$2C,$2D,$88,$F5,$A6,$96
  Data.b $66,$D7,$FE,$BE,$AA,$BD,$EE,$ED,$5B,$3C,$B8,$93,$60,$D2,$D5,$A6,$30,$59,$16,$77
  Data.b $9C,$E0,$B1,$3A,$75,$BB,$F6,$0E,$AB,$5C,$9A,$AE,$2D,$EF,$B5,$2D,$A8,$33,$28,$01
  Data.b $0D,$3C,$CF,$94,$99,$CF,$27,$F4,$0F,$99,$88,$C7,$65,$55,$85,$F9,$37,$BF,$09,$6B
  Data.b $99,$29,$4A,$EA,$A7,$00,$03,$00,$14,$77,$B6,$28,$98,$5B,$C9,$3F,$00,$00,$00,$00
  Data.b $49,$45,$4E,$44,$AE,$42,$60,$82
  ImageButton0end:
EndDataSection


DataSection
  ImageButton1:
  Data.b $89,$50,$4E,$47,$0D,$0A,$1A,$0A,$00,$00,$00,$0D,$49,$48,$44,$52,$00,$00,$00,$1A
  Data.b $00,$00,$00,$11,$08,$06,$00,$00,$00,$C3,$8D,$BC,$0D,$00,$00,$00,$09,$70,$48,$59
  Data.b $73,$00,$00,$0B,$13,$00,$00,$0B,$13,$01,$00,$9A,$9C,$18,$00,$00,$00,$04,$67,$41
  Data.b $4D,$41,$00,$00,$AF,$C8,$37,$05,$8A,$E9,$00,$00,$00,$19,$74,$45,$58,$74,$53,$6F
  Data.b $66,$74,$77,$61,$72,$65,$00,$41,$64,$6F,$62,$65,$20,$49,$6D,$61,$67,$65,$52,$65
  Data.b $61,$64,$79,$71,$C9,$65,$3C,$00,$00,$02,$DE,$49,$44,$41,$54,$78,$DA,$BC,$55,$4D
  Data.b $68,$13,$41,$14,$FE,$76,$77,$76,$93,$4D,$B7,$6D,$DA,$0A,$6A,$A1,$35,$68,$34,$55
  Data.b $5B,$AC,$14,$15,$EC,$41,$8B,$7A,$B3,$18,$2F,$E2,$A9,$A0,$17,$7B,$AC,$58,$FC,$C3
  Data.b $83,$45,$50,$2F,$82,$87,$56,$04,$8B,$1E,$ED,$B1,$3F,$A2,$55,$B1,$07,$B5,$20,$7A
  Data.b $F0,$AF,$88,$D6,$42,$DA,$0A,$FD,$6F,$29,$26,$1A,$D2,$64,$77,$9C,$99,$6C,$12,$B7
  Data.b $F9,$11,$41,$1C,$78,$3B,$F3,$66,$DE,$7B,$DF,$BC,$6F,$DE,$CC,$02,$FF,$A9,$49,$8F
  Data.b $0F,$1D,$DC,$41,$2D,$AB,$97,$52,$CB,$07,$4A,$C1,$85,$77,$C9,$3E,$A9,$E7,$1B,$17
  Data.b $5E,$47,$6A,$6E,$1C,$92,$14,$24,$12,$51,$82,$9A,$51,$EA,$5B,$B7,$7F,$5F,$D2,$C8
  Data.b $34,$C1,$80,$33,$4E,$DC,$83,$37,$9A,$DA,$DB,$6A,$DD,$0E,$08,$9A,$59,$B2,$FD,$2D
  Data.b $33,$81,$A9,$A7,$43,$BE,$78,$38,$1C,$24,$B2,$A6,$A1,$AC,$AE,$16,$A5,$9B,$36,$C2
  Data.b $5A,$59,$81,$19,$8D,$0A,$43,$96,$A1,$23,$58,$E1,$46,$9D,$43,$3B,$2B,$6A,$99,$28
  Data.b $DB,$1A,$C0,$C2,$DB,$0F,$60,$40,$2A,$14,$55,$85,$CC,$D6,$63,$F3,$73,$00,$DF,$CD
  Data.b $BF,$38,$13,$5B,$44,$6C,$86,$41,$F8,$40,$21,$04,$32,$DB,$89,$AA,$B9,$B3,$1C,$3E
  Data.b $4D,$4D,$A7,$C7,$45,$2E,$0D,$1B,$2A,$2A,$D2,$FA,$C4,$E2,$22,$7E,$C4,$56,$D2,$FA
  Data.b $B6,$CA,$F5,$59,$FE,$C4,$E5,$4A,$02,$71,$EA,$14,$55,$03,$21,$2A,$A0,$EB,$59,$86
  Data.b $B3,$0A,$41,$F0,$54,$2B,$0C,$C3,$C0,$D8,$D8,$18,$DE,$0F,$F4,$61,$57,$75,$15,$DE
  Data.b $4C,$7E,$C3,$96,$E6,$23,$F0,$FB,$FD,$62,$FE,$EB,$83,$01,$68,$39,$FC,$39,$10,$8F
  Data.b $2F,$0B,$EA,$38,$A2,$E6,$82,$E6,$D6,$B3,$A4,$B9,$26,$80,$FE,$EE,$6E,$44,$22,$11
  Data.b $11,$B4,$B2,$E9,$00,$06,$3F,$8F,$3A,$40,$42,$4F,$06,$B1,$77,$B3,$3F,$A7,$3F,$71
  Data.b $B9,$ED,$8C,$38,$75,$0C,$51,$65,$99,$59,$6E,$77,$4E,$BE,$83,$75,$DB,$D1,$7F,$EF
  Data.b $2E,$0E,$9F,$38,$89,$FA,$FA,$7A,$01,$90,$CA,$70,$72,$E8,$19,$1A,$03,$81,$BC,$67
  Data.b $A5,$B0,$B8,$69,$EA,$E6,$46,$3E,$62,$6A,$78,$18,$91,$50,$28,$AF,$43,$39,$93,$DB
  Data.b $5F,$46,$D1,$DE,$D9,$29,$40,$78,$EB,$B9,$78,$01,$BB,$E7,$66,$F1,$B2,$40,$51,$28
  Data.b $C5,$C5,$20,$CC,$5E,$50,$27,$2B,$12,$1B,$98,$AC,$4F,$E4,$95,$90,$A1,$23,$D8,$D6
  Data.b $E6,$08,$72,$FC,$EA,$35,$31,$5F,$C8,$8F,$1D,$F1,$EF,$D4,$49,$20,$F0,$80,$56,$18
  Data.b $39,$77,$35,$AB,$79,$B0,$A7,$FD,$B2,$A0,$6C,$66,$66,$06,$0F,$EF,$DC,$C2,$B1,$D3
  Data.b $67,$85,$8E,$9B,$5D,$78,$71,$E9,$0C,$6A,$AC,$68,$EE,$1B,$C6,$CE,$89,$8A,$64,$18
  Data.b $75,$AA,$C7,$05,$DD,$AB,$C3,$B3,$C6,$C8,$92,$A5,$22,$37,$BC,$2D,$AD,$E2,$6C,$78
  Data.b $41,$0C,$DC,$B8,$82,$86,$E9,$11,$DC,$EF,$38,$97,$2E,$90,$9D,$E7,$3B,$84,$5D,$2E
  Data.b $7F,$8D,$67,$CC,$AB,$9A,$A7,$A5,$BA,$09,$34,$89,$A5,$19,$77,$66,$F4,$33,$61,$61
  Data.b $BC,$A4,$1C,$0D,$D1,$65,$BC,$EA,$EB,$C1,$C4,$BB,$D7,$68,$D2,$C3,$EC,$1A,$18,$68
  Data.b $42,$18,$8F,$BA,$AE,$A3,$AA,$A6,$56,$D8,$8E,$AF,$F5,$A1,$4A,$5E,$82,$87,$C8,$8E
  Data.b $18,$D1,$98,$0B,$66,$CC,$A6,$4E,$D5,$29,$74,$56,$DE,$2A,$75,$02,$79,$98,$1C,$45
  Data.b $82,$45,$79,$2E,$F4,$6A,$2F,$FF,$66,$6C,$1A,$B1,$94,$59,$13,$77,$B5,$24,$8B,$3A
  Data.b $33,$4C,$10,$A3,$0A,$88,$A4,$28,$88,$27,$D8,$B3,$60,$B0,$8B,$55,$5C,$9A,$F7,$19
  Data.b $FB,$F3,$E3,$4A,$ED,$07,$D6,$A9,$C7,$BF,$CB,$8C,$3A,$76,$71,$D9,$B8,$37,$1E,$97
  Data.b $DA,$16,$E6,$35,$6F,$B2,$88,$57,$03,$D9,$10,$A9,$CF,$5F,$FF,$26,$AC,$65,$89,$D0
  Data.b $DE,$5F,$02,$0C,$00,$0C,$45,$5B,$FC,$81,$BD,$E4,$8A,$00,$00,$00,$00,$49,$45,$4E
  Data.b $44,$AE,$42,$60,$82
  ImageButton1end:
EndDataSection

DataSection
  ImageButton2:
  Data.b $89,$50,$4E,$47,$0D,$0A,$1A,$0A,$00,$00,$00,$0D,$49,$48,$44,$52,$00,$00,$00,$1A
  Data.b $00,$00,$00,$11,$08,$06,$00,$00,$00,$C3,$8D,$BC,$0D,$00,$00,$00,$09,$70,$48,$59
  Data.b $73,$00,$00,$0B,$13,$00,$00,$0B,$13,$01,$00,$9A,$9C,$18,$00,$00,$00,$04,$67,$41
  Data.b $4D,$41,$00,$00,$AF,$C8,$37,$05,$8A,$E9,$00,$00,$00,$19,$74,$45,$58,$74,$53,$6F
  Data.b $66,$74,$77,$61,$72,$65,$00,$41,$64,$6F,$62,$65,$20,$49,$6D,$61,$67,$65,$52,$65
  Data.b $61,$64,$79,$71,$C9,$65,$3C,$00,$00,$02,$F6,$49,$44,$41,$54,$78,$DA,$BC,$55,$4B
  Data.b $68,$13,$61,$10,$FE,$B2,$8F,$66,$F3,$68,$12,$2C,$F6,$21,$14,$35,$44,$28,$0D,$2D
  Data.b $16,$A1,$F4,$54,$8A,$62,$BD,$54,$28,$A2,$D0,$AB,$56,$45,$D4,$83,$AD,$82,$A0,$42
  Data.b $63,$7B,$13,$C5,$5A,$A1,$7A,$6A,$45,$D4,$4B,$A1,$B4,$B5,$AD,$54,$A5,$08,$1E,$BD
  Data.b $A4,$A0,$B4,$42,$0E,$35,$F8,$20,$F4,$95,$F7,$26,$BB,$C9,$AE,$FF,$FE,$1B,$B6,$49
  Data.b $9B,$04,$11,$71,$D8,$D9,$CC,$FC,$FF,$3F,$F3,$CD,$3F,$33,$3B,$01,$FE,$13,$99,$B4
  Data.b $D7,$54,$5B,$EB,$D9,$54,$22,$39,$A6,$A8,$2A,$D1,$54,$FD,$A1,$72,$8E,$72,$B2,$B1
  Data.b $A6,$1A,$AF,$12,$6B,$39,$99,$08,$9A,$4F,$33,$C7,$7F,$E0,$B4,$25,$31,$2D,$0D,$3B
  Data.b $0F,$37,$A3,$DA,$EB,$25,$9B,$0A,$94,$6C,$96,$FC,$28,$BA,$05,$7D,$D4,$E2,$61,$E6
  Data.b $C7,$92,$0B,$D0,$00,$23,$F6,$1A,$4B,$B1,$18,$96,$A7,$5E,$77,$50,$20,$59,$51,$1C
  Data.b $76,$B7,$1B,$E6,$BA,$3A,$64,$52,$29,$28,$89,$38,$D4,$6C,$06,$24,$9C,$C2,$9B,$FD
  Data.b $29,$D1,$00,$49,$A0,$04,$88,$E3,$79,$A4,$88,$4E,$81,$88,$4B,$C4,$13,$09,$28,$3F
  Data.b $BE,$63,$6D,$65,$F9,$EF,$9C,$97,$A1,$02,$A0,$58,$24,$82,$58,$34,$8A,$F0,$FA,$46
  Data.b $C1,$A1,$24,$C1,$4C,$E4,$E9,$36,$C2,$56,$D3,$B6,$BE,$A6,$96,$DE,$33,$80,$B4,$9B
  Data.b $D1,$D4,$91,$BC,$46,$09,$88,$92,$C9,$60,$6B,$A3,$10,$48,$26,$EC,$3A,$D9,$8D,$AB
  Data.b $B7,$EF,$50,$7D,$7A,$62,$02,$9F,$1F,$DC,$23,$86,$2A,$C4,$C6,$26,$DC,$18,$79,$0C
  Data.b $BB,$DD,$8E,$F7,$6F,$E6,$B1,$78,$77,$00,$CE,$22,$F5,$14,$09,$10,$AB,$09,$27,$6A
  Data.b $6A,$7C,$29,$41,$40,$82,$80,$6D,$86,$42,$10,$45,$D1,$60,$89,$F0,$E6,$92,$1F,$2B
  Data.b $9B,$61,$B4,$75,$74,$A0,$81,$34,$CC,$D2,$AF,$10,$D6,$49,$FD,$6E,$8E,$3E,$A1,$20
  Data.b $EF,$E6,$E6,$30,$7D,$BD,$0F,$1C,$49,$7F,$BE,$AD,$C1,$A9,$B4,$DE,$DE,$F7,$9B,$9B
  Data.b $D4,$A4,$CB,$05,$31,$12,$C6,$7A,$F0,$5B,$D1,$3C,$67,$19,$16,$DE,$CB,$57,$D0,$3F
  Data.b $38,$44,$F5,$78,$3C,$4E,$41,$DE,$CE,$CE,$E2,$C5,$85,$5E,$08,$E9,$54,$E9,$DE,$60
  Data.b $38,$3D,$75,$2A,$81,$93,$33,$32,$64,$59,$86,$94,$96,$4A,$1A,$F8,$1F,$3D,$C4,$64
  Data.b $A3,$17,$A7,$7A,$7A,$28,$48,$20,$10,$C0,$D8,$F9,$73,$10,$48,$0B,$4B,$65,$9A,$81
  Data.b $11,$58,$30,$54,$20,$D1,$32,$0C,$03,$96,$E3,$C1,$57,$54,$94,$E4,$AA,$A3,$C7,$D1
  Data.b $D9,$D5,$65,$38,$F0,$78,$3C,$68,$BD,$78,$09,$8C,$C5,$52,$D6,$8E,$25,$BE,$E9,$8D
  Data.b $38,$8E,$85,$59,$B0,$C0,$44,$7A,$DF,$EA,$74,$14,$8D,$8A,$6F,$6D,$83,$6F,$6C,$5C
  Data.b $AF,$C9,$FC,$3C,$82,$5F,$57,$D0,$DB,$D7,$4F,$52,$39,$88,$61,$96,$41,$E0,$D9,$38
  Data.b $58,$ED,$DB,$29,$96,$F6,$B4,$AC,$03,$55,$70,$1C,$4C,$8E,$4A,$64,$AC,$66,$28,$52
  Data.b $7A,$D7,$41,$B9,$A1,$11,$B7,$46,$9F,$52,$10,$BF,$DF,$8F,$85,$21,$1F,$04,$25,$8B
  Data.b $A9,$FA,$7A,$74,$9F,$3E,$83,$6B,$03,$3E,$8C,$B0,$1C,$42,$33,$93,$BA,$C3,$1D,$94
  Data.b $0C,$AD,$E5,$80,$C8,$F5,$2C,$7B,$5C,$A4,$56,$26,$F0,$1C,$5B,$70,$E8,$A7,$9C,$41
  Data.b $4B,$7B,$3B,$3E,$CE,$CE,$50,$FD,$D3,$CC,$34,$0E,$EC,$AB,$A5,$F2,$97,$97,$CF,$21
  Data.b $87,$B7,$68,$00,$87,$3C,$6E,$AC,$EE,$3F,$08,$B7,$22,$EF,$02,$DA,$88,$C4,$F4,$AE
  Data.b $7B,$D5,$79,$4C,$B5,$1D,$69,$01,$6F,$B3,$42,$8C,$46,$FE,$F9,$E4,$0E,$2E,$2C,$EA
  Data.b $37,$B2,$59,$84,$B0,$35,$9B,$71,$59,$04,$33,$F9,$B2,$1D,$45,$87,$E6,$EE,$79,$AA
  Data.b $96,$1D,$B2,$DB,$F5,$49,$A3,$AA,$D2,$A6,$03,$39,$9D,$4E,$9F,$B4,$1A,$1C,$4E,$AE
  Data.b $7E,$2B,$FC,$8B,$C8,$9B,$79,$DB,$D3,$19,$C6,$54,$37,$E0,$F2,$A6,$B6,$B6,$A7,$EE
  Data.b $D0,$6B,$F7,$56,$FB,$7F,$0B,$30,$00,$D3,$02,$72,$7C,$76,$A0,$82,$C4,$00,$00,$00
  Data.b $00,$49,$45,$4E,$44,$AE,$42,$60,$82
  ImageButton2end:
EndDataSection

Zuletzt geändert von Lambda am 25.11.2011 23:06, insgesamt 2-mal geändert.
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: ButtonGadgetEx - Images als Button

Beitrag von ts-soft »

:allright:
Jetzt noch diese Zeile:

Code: Alles auswählen

*GadgetEx\FACE = GetSysColor_(#COLOR_3DFACE)
gegen was crossplattformtaugliches tauschen dann wäre es noch schöner :wink:

Gruß
Thomas
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
Benutzeravatar
HeX0R
Beiträge: 3054
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: ButtonGadgetEx - Images als Button

Beitrag von HeX0R »

cOoki3druqs hat geschrieben: habe noch nie was mit dem CanvasGadget gemacht und wollte eine alternative für ein button durch ein ImageGadget. sollte sich wie ein windows button verhalten.
Du meinst ein ButtonImageGadget()?
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: ButtonGadgetEx - Images als Button

Beitrag von Lambda »

sogesehen ja nur ohne den button im hintergrund^^ und images für jeden zustand
Benutzeravatar
Bisonte
Beiträge: 2470
Registriert: 01.04.2007 20:18

Re: ButtonGadgetEx - Images als Button

Beitrag von Bisonte »

Ist das CanvasGadget nicht ein wenig overdressed dafür ?

Ich würde dafür ImageGadgets nehmen, weil die Images dafür schon vohanden sind (kein neuzeichnen)
und ich hab Transparenz...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: ButtonGadgetEx - Images als Button

Beitrag von Lambda »

transparenz hast du hier auch solange der button nicht auf einem bild liegt.

hab es mal etwas erweitert.. kann getoggled werden und das deaktivierte bild ist nichtmehr nötig

edit: allerdings geht die transparenz bei einem png flöten.. weis jemand wie ich den filter richtig anpassen muss?
Benutzeravatar
Bisonte
Beiträge: 2470
Registriert: 01.04.2007 20:18

Re: ButtonGadgetEx - Images als Button

Beitrag von Bisonte »

Falls du damit meinst, dass du transparenten Hintergrund hast ? Kannst knicken. Canvas ist 24 Bit... Keine Transparenz,
(und wie in einem anderem Thread) egal wieviele transparente Images du draufmalst ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: ButtonGadgetEx - Images als Button

Beitrag von Lambda »

nein darum gehts nicht.. das gadget an sich ist leider nicht transparent da hast du recht.. aber solange kein mehrfarbiger hintergrund da ist kein problem. nur bei der grau skalierung gibt es noch ein problem bei transparenten png´s
Benutzeravatar
Bisonte
Beiträge: 2470
Registriert: 01.04.2007 20:18

Re: ButtonGadgetEx - Images als Button

Beitrag von Bisonte »

Warum Grau-Skalierung ? Zeichne doch das Disabled Image per DrawAlphaImage() und einem AlphaWert von 128.
Zuletzt geändert von Bisonte am 02.05.2013 02:51, insgesamt 1-mal geändert.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: ButtonGadgetEx - Images als Button

Beitrag von rolaf »

Wattn Aufwand fürn Button, aber schön isses doch. :mrgreen:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Antworten