ButtongGadget with Text + Icon ?

Just starting out? Need help? Post your questions and find answers here.
va!n
Addict
Addict
Posts: 1104
Joined: Wed Apr 20, 2005 12:48 pm

ButtongGadget with Text + Icon ?

Post by va!n »

I dont really know if its still a part of purebasic or not! However, i cant find anything about this on the help nor on forum search! Is there any way to create ButtonGadgets including a small icon to it? This would be really nice!

If this feature isnt implented yet, it would be nice to have for future versions and for all OS. thx
Last edited by va!n on Thu Mar 16, 2006 3:53 am, edited 1 time in total.
va!n aka Thorsten

Intel i7-980X Extreme Edition, 12 GB DDR3, Radeon 5870 2GB, Windows7 x64,
User avatar
Fangbeast
PureBasic Protozoa
PureBasic Protozoa
Posts: 4789
Joined: Fri Apr 25, 2003 3:08 pm
Location: Not Sydney!!! (Bad water, no goats)

Post by Fangbeast »

What's wrong with ButtonImageGadget? Been a part of PureBasic for years
Amateur Radio/VK3HAF, (D-STAR/DMR and more), Arduino, ESP32, Coding, Crochet
va!n
Addict
Addict
Posts: 1104
Joined: Wed Apr 20, 2005 12:48 pm

Post by va!n »

@Fangbeast:
Sorry, maybe you misunderstand me!? I want to have a normal ButtonGadget - also with normal text and adding to this button only i small icon - and not an image on the complete button :wink:

Code: Select all

for example it could look like this...

+-------------------+
|  (icon)  AnyText  |
+-------------------+
va!n aka Thorsten

Intel i7-980X Extreme Edition, 12 GB DDR3, Radeon 5870 2GB, Windows7 x64,
Sparkie
PureBatMan Forever
PureBatMan Forever
Posts: 2307
Joined: Tue Feb 10, 2004 3:07 am
Location: Ohio, USA

Post by Sparkie »

Room for improvement but it's a start. ;)

Code: Select all

;/============================================================= 
;/ Code      : Button with image and text
;/ Author    : Sparkie 
;/ Start Date: 03/15/06 
;/ PB Version: PB 4.00 Beta6 
;/ OS Support: Windows 98/ME/NT/2000/XP/Server 2003 
;/============================================================= 

;/=============================================== 
;/ Procedure - Create icon/text ButtonImageGadget
;/=============================================== 
Procedure ButtonIconGadget(num, x, y, w, h, text$, imageId, icoW, icoH)
  buttonBack = GetSysColor_(#COLOR_BTNFACE)
  thisImg = CreateImage(#PB_Any, w, h)
  StartDrawing(ImageOutput(thisImg))
  Box(0, 0, w, h, buttonBack)
  DrawImage(imageId, 5, (h - icoH)/2, icoW, icoH)
  DrawingFont(getstockobject_(#DEFAULT_GUI_FONT))
  DrawText(icoW + 10, (h - TextHeight(text$))/2, "Button/icon", #Black, buttonBack)
  StopDrawing()
  gadId = ButtonImageGadget(num, x, y, w, h, ImageID(thisImg))
  ProcedureReturn gadId
EndProcedure
If OpenWindow(0, 0, 0, 140, 100, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  ButtonIconGadget(0, 10, 10, 120, 28, "Button/Icon", CatchImage(0, ?ButtonIcon1), 16, 16)
  ButtonIconGadget(1, 10, 45, 120, 38, "Button/Icon", CatchImage(0, ?ButtonIcon2), 32, 32)
  Repeat
    event = WaitWindowEvent()
    Select event
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0
            MessageRequester("Event", "Button 0")
          Case 1
            MessageRequester("Event","Button 1")
        EndSelect
    EndSelect
  Until event = #PB_Event_CloseWindow
EndIf
End
DataSection
ButtonIcon1:
Data.b $00,$00,$01,$00,$01,$00,$10,$10,$00,$00,$01,$00,$08,$00,$68,$05
Data.b $00,$00,$16,$00,$00,$00,$28,$00,$00,$00,$10,$00,$00,$00,$20,$00
Data.b $00,$00,$01,$00,$08,$00,$00,$00,$00,$00,$00,$00,$00,$00,$48,$00
Data.b $00,$00,$48,$00,$00,$00,$00,$01,$00,$00,$00,$00,$00,$00,$D5,$FE
Data.b $FE,$00,$CD,$FE,$FE,$00,$CD,$F6,$FE,$00,$BC,$F6,$FE,$00,$B4,$F6
Data.b $FE,$00,$AC,$F6,$FE,$00,$AC,$F6,$F6,$00,$A4,$F6,$F6,$00,$9B,$F6
Data.b $F6,$00,$AC,$EE,$F6,$00,$BC,$EE,$EE,$00,$A4,$EE,$F6,$00,$93,$EE
Data.b $F6,$00,$A4,$EE,$EE,$00,$8B,$EE,$F6,$00,$9B,$EE,$EE,$00,$83,$EE
Data.b $F6,$00,$CD,$E5,$E5,$00,$83,$EE,$EE,$00,$BC,$E5,$E5,$00,$9B,$E5
Data.b $EE,$00,$83,$EE,$DD,$00,$83,$E5,$EE,$00,$9B,$E5,$E5,$00,$7A,$E5
Data.b $EE,$00,$72,$E5,$EE,$00,$6A,$E5,$EE,$00,$7A,$E5,$E5,$00,$83,$E5
Data.b $DD,$00,$6A,$E5,$E5,$00,$7A,$E5,$DD,$00,$8B,$DD,$E5,$00,$7A,$DD
Data.b $E5,$00,$7A,$E5,$D5,$00,$6A,$DD,$E5,$00,$7A,$DD,$DD,$00,$62,$DD
Data.b $E5,$00,$72,$DD,$DD,$00,$8B,$D5,$DD,$00,$6A,$DD,$D5,$00,$7A,$D5
Data.b $DD,$00,$8B,$D5,$D5,$00,$72,$D5,$DD,$00,$B4,$CD,$CD,$00,$72,$D5
Data.b $D5,$00,$59,$D5,$DD,$00,$72,$D5,$CD,$00,$83,$CD,$D5,$00,$72,$CD
Data.b $D5,$00,$59,$D5,$CD,$00,$6A,$CD,$D5,$00,$51,$CD,$DD,$00,$72,$CD
Data.b $CD,$00,$59,$D5,$C4,$00,$83,$C4,$CD,$00,$83,$C4,$C4,$00,$7A,$C4
Data.b $C4,$00,$A4,$BC,$BC,$00,$62,$C4,$C4,$00,$41,$C4,$CD,$00,$83,$BC
Data.b $C4,$00,$39,$C4,$CD,$00,$7A,$BC,$BC,$00,$62,$BC,$C4,$00,$49,$C4
Data.b $BC,$00,$6A,$BC,$BC,$00,$7A,$B4,$BC,$00,$83,$CD,$83,$00,$62,$B4
Data.b $BC,$00,$62,$B4,$B4,$00,$62,$AC,$B4,$00,$20,$B4,$BC,$00,$30,$B4
Data.b $B4,$00,$49,$BC,$9B,$00,$51,$BC,$93,$00,$30,$B4,$AC,$00,$72,$A4
Data.b $AC,$00,$6A,$A4,$A4,$00,$18,$AC,$AC,$00,$62,$93,$9B,$00,$72,$93
Data.b $93,$00,$59,$8B,$93,$00,$51,$83,$8B,$00,$51,$83,$83,$00,$6A,$7A
Data.b $83,$00,$62,$7A,$83,$00,$51,$7A,$83,$00,$62,$7A,$7A,$00,$51,$7A
Data.b $7A,$00,$6A,$72,$7A,$00,$49,$72,$72,$00,$49,$6A,$72,$00,$59,$6A
Data.b $6A,$00,$41,$6A,$6A,$00,$51,$62,$62,$00,$51,$59,$62,$00,$49,$59
Data.b $62,$00,$41,$59,$62,$00,$39,$51,$59,$00,$39,$51,$51,$00,$30,$51
Data.b $51,$00,$41,$49,$51,$00,$30,$49,$51,$00,$39,$49,$49,$00,$30,$49
Data.b $49,$00,$30,$41,$49,$00,$39,$41,$41,$00,$28,$41,$41,$00,$30,$39
Data.b $41,$00,$28,$39,$39,$00,$30,$30,$39,$00,$28,$30,$39,$00,$20,$30
Data.b $30,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$4E,$47
Data.b $3D,$33,$24,$19,$18,$3F,$2C,$18,$19,$24,$33,$3D,$47,$49,$48,$3B
Data.b $2D,$22,$45,$28,$0E,$68,$62,$0E,$34,$46,$19,$2D,$3B,$48,$40,$2D
Data.b $19,$20,$6D,$4D,$08,$4C,$3C,$08,$56,$6B,$16,$19,$2D,$40,$35,$22
Data.b $30,$0C,$2F,$0B,$06,$06,$06,$06,$0D,$26,$0C,$20,$19,$35,$27,$46
Data.b $6F,$2F,$0B,$06,$03,$03,$03,$03,$06,$0B,$3E,$70,$30,$27,$21,$28
Data.b $4F,$0D,$06,$03,$02,$02,$02,$02,$03,$06,$0F,$52,$12,$21,$1C,$0E
Data.b $08,$06,$03,$02,$00,$2B,$11,$00,$0A,$03,$06,$08,$0E,$1C,$34,$63
Data.b $37,$06,$03,$02,$39,$6A,$6A,$59,$65,$50,$09,$42,$63,$23,$34,$5D
Data.b $29,$06,$03,$02,$2B,$6E,$6C,$5C,$67,$50,$09,$42,$5A,$23,$1C,$0E
Data.b $08,$06,$03,$02,$00,$5E,$54,$00,$13,$03,$06,$08,$0E,$1C,$21,$34
Data.b $58,$14,$06,$03,$02,$5E,$54,$02,$03,$06,$17,$5B,$28,$21,$27,$3F
Data.b $68,$26,$0B,$06,$03,$60,$57,$03,$06,$0B,$38,$68,$30,$27,$35,$22
Data.b $1B,$0C,$42,$14,$17,$6C,$62,$09,$17,$36,$0C,$16,$1D,$35,$40,$2D
Data.b $19,$30,$70,$51,$08,$61,$53,$08,$5A,$69,$16,$19,$2D,$40,$4B,$3B
Data.b $2D,$22,$2A,$20,$0E,$63,$63,$0E,$28,$30,$22,$2D,$3B,$4B,$4A,$4B
Data.b $40,$35,$27,$21,$1C,$41,$23,$1C,$21,$27,$35,$40,$4B,$43,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
ButtonIcon2:
Data.b $00,$00,$01,$00,$01,$00,$20,$20,$04,$00,$01,$00,$04,$00,$E8,$02
Data.b $00,$00,$16,$00,$00,$00,$28,$00,$00,$00,$20,$00,$00,$00,$40,$00
Data.b $00,$00,$01,$00,$04,$00,$00,$00,$00,$00,$80,$02,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$80,$00,$00,$80,$00,$00,$00,$80,$80,$00,$00,$00,$00
Data.b $80,$00,$00,$80,$80,$00,$80,$00,$80,$00,$80,$80,$80,$00,$C0,$C0
Data.b $C0,$00,$00,$FF,$00,$00,$FF,$00,$00,$00,$FF,$FF,$00,$00,$00,$00
Data.b $FF,$00,$00,$FF,$FF,$00,$FF,$00,$FF,$00,$FF,$FF,$FF,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$B8,$FF,$BF,$BF,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$8B,$8B,$FF,$FB,$FB,$FB,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$08,$B8,$B8,$FF,$BF,$BF,$BF,$A0,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$FF,$8B,$8B,$FF,$FB,$FB,$FA,$AA,$00,$00,$00,$00,$00,$00
Data.b $00,$0F,$BF,$F8,$B8,$FF,$BF,$BF,$BA,$AF,$A0,$00,$00,$00,$00,$00
Data.b $00,$FB,$FB,$FF,$8B,$8F,$FB,$FB,$AA,$FB,$FB,$00,$00,$00,$00,$00
Data.b $00,$BF,$BF,$BF,$F8,$BF,$BF,$BA,$AF,$BF,$BF,$00,$00,$00,$00,$00
Data.b $0B,$FB,$FB,$FB,$FF,$8F,$FB,$AA,$FB,$FB,$FB,$F0,$00,$00,$00,$00
Data.b $0F,$BF,$BF,$BF,$BF,$00,$00,$AF,$BF,$BF,$BF,$B0,$00,$00,$00,$00
Data.b $0E,$EE,$EE,$FB,$F0,$00,$00,$0B,$FB,$FB,$FB,$F0,$00,$00,$00,$00
Data.b $0E,$EE,$EE,$EE,$E0,$00,$00,$0E,$EE,$EE,$EE,$E0,$00,$00,$00,$00
Data.b $0B,$FB,$FB,$FB,$F0,$00,$00,$0B,$FB,$EE,$EE,$E0,$00,$00,$00,$00
Data.b $0F,$BF,$BF,$BF,$BA,$00,$00,$FF,$BF,$BF,$BF,$B0,$00,$00,$00,$00
Data.b $0B,$FB,$FB,$FB,$AA,$FB,$F8,$FF,$FB,$FB,$FB,$F0,$00,$00,$00,$00
Data.b $0F,$BF,$BF,$BA,$AF,$BF,$FB,$8F,$FF,$BF,$BF,$B0,$00,$00,$00,$00
Data.b $00,$FB,$FB,$AA,$FB,$FB,$F8,$B8,$FF,$FB,$FB,$00,$00,$00,$00,$00
Data.b $00,$BF,$BA,$AF,$BF,$BF,$FF,$8B,$8F,$FF,$BF,$00,$00,$00,$00,$00
Data.b $00,$0B,$AA,$AB,$FB,$FB,$FF,$B8,$B8,$FF,$F0,$00,$00,$00,$00,$00
Data.b $00,$00,$AA,$BF,$BF,$BF,$FF,$8B,$8B,$8F,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$0B,$FB,$FB,$FB,$FF,$B8,$B8,$B0,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$BF,$BF,$BF,$FF,$8B,$8B,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$FB,$FB,$FF,$B8,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F0
Data.b $0F,$FF,$FF,$C0,$03,$FF,$FF,$80,$01,$FF,$FF,$00,$00,$FF,$FE,$00
Data.b $00,$7F,$FC,$00,$00,$3F,$F8,$00,$00,$1F,$F8,$00,$00,$1F,$F0,$00
Data.b $00,$0F,$F0,$00,$00,$0F,$F0,$03,$C0,$0F,$F0,$03,$C0,$0F,$F0,$03
Data.b $C0,$0F,$F0,$00,$00,$0F,$F0,$00,$00,$0F,$F0,$00,$00,$0F,$F8,$00
Data.b $00,$1F,$F8,$00,$00,$1F,$FC,$00,$00,$3F,$FE,$00,$00,$7F,$FF,$00
Data.b $00,$FF,$FF,$80,$01,$FF,$FF,$C0,$03,$FF,$FF,$F0,$0F,$FF,$FF,$FF
Data.b $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
EndDataSection
What goes around comes around.

PB 5.21 LTS (x86) - Windows 8.1
User avatar
Fangbeast
PureBasic Protozoa
PureBasic Protozoa
Posts: 4789
Joined: Fri Apr 25, 2003 3:08 pm
Location: Not Sydney!!! (Bad water, no goats)

Post by Fangbeast »

va!n wrote:@Fangbeast:
Sorry, maybe you misunderstand me!? I want to have a normal ButtonGadget - also with normal text and adding to this button only i small icon - and not an image on the complete button :wink:

Code: Select all

for example it could look like this...

+-------------------+
|  (icon)  AnyText  |
+-------------------+
I like Sparkie's solution. Sorry to have gotten it wrong. I wanted something like this as well but I could only get a solution like this for the toolbar so far via PBOSL ToolBarPro but nothing for single buttons.
Amateur Radio/VK3HAF, (D-STAR/DMR and more), Arduino, ESP32, Coding, Crochet
Tranquil
Addict
Addict
Posts: 952
Joined: Mon Apr 28, 2003 2:22 pm
Location: Europe

Post by Tranquil »

I searched for a solution for this one to. The problem on this: With XPSkinning an ImageGadget does not look like a normal Button.

So, any API Solution on a ButtonGadget is welcome.
Tranquil
User avatar
Fangbeast
PureBasic Protozoa
PureBasic Protozoa
Posts: 4789
Joined: Fri Apr 25, 2003 3:08 pm
Location: Not Sydney!!! (Bad water, no goats)

Post by Fangbeast »

Tranquil wrote:I searched for a solution for this one to. The problem on this: With XPSkinning an ImageGadget does not look like a normal Button.

So, any API Solution on a ButtonGadget is welcome.
A couple of years ago, I saw someone render an icon onto a button. Don't know fo the code is still around though. As far as I am aware, a buttongadget is a child window (so a window object per se) and you should be able to render onto it using WindOutput.

But, I could be wrong (and I frequently am) and there might be redraw issues etc, with this idea.
Amateur Radio/VK3HAF, (D-STAR/DMR and more), Arduino, ESP32, Coding, Crochet
va!n
Addict
Addict
Posts: 1104
Joined: Wed Apr 20, 2005 12:48 pm

Post by va!n »

@Fangbeast:
Yes, some years ago, someone wrote an example how to use text+icon in a button! But its long time ago and i dont remember the author nor i can find anything with the search option on forum! Would be nice, if Fred could add this feature to future versions :wink:
va!n aka Thorsten

Intel i7-980X Extreme Edition, 12 GB DDR3, Radeon 5870 2GB, Windows7 x64,
User avatar
fsw
Addict
Addict
Posts: 1603
Joined: Tue Apr 29, 2003 9:18 pm
Location: North by Northwest

Post by fsw »

In any case there is a problem with skinning on XP machines like Tranquil said.

I use FLYAKITE and the buttons have nice rounded corners (OSX style) so a rectangular image will always start outside the rounded corners, which looks horrible..

The only solution would be to have a transparancy mode while displaying the image.
Nico
Enthusiast
Enthusiast
Posts: 274
Joined: Sun Jan 11, 2004 11:34 am
Location: France

Post by Nico »

I created a lib Settextcolor which allows it for 3.94.

http://home.tele2.fr/purebasic/archives ... iries.html
User avatar
netmaestro
PureBasic Bullfrog
PureBasic Bullfrog
Posts: 8451
Joined: Wed Jul 06, 2005 5:42 am
Location: Fort Nelson, BC, Canada

Post by netmaestro »

A couple of years ago, I saw someone render an icon onto a button. Don't know fo the code is still around though
This won't be what you saw, but sparkie's code massaged slightly to render a standard 32*32 icon looks like:

You'll need this (or you can use your own): http://www.networkmaestro.com/icons.zip

Code: Select all

;; Make sure movie.ico is in the program folder
;;
hIcon=LoadImage_(GetModuleHandle_(0),"movie.ico",#IMAGE_ICON,32,32,#LR_LOADFROMFILE) 

Procedure ButtonIconGadget(num, hIcon, x, y, w, h, text$) 
  buttonBack = GetSysColor_(#COLOR_BTNFACE) 
  thisImg = CreateImage(#PB_Any, w, h) 
  hDC=StartDrawing(ImageOutput(thisImg)) 
  Box(0, 0, w, h, buttonBack) 
  DrawIconEx_(hDC, 5,5, hIcon, 0, 0, 0, #Null, #DI_NORMAL | #DI_COMPAT )  
  DrawingFont(GetStockObject_(#DEFAULT_GUI_FONT)) 
  DrawText(50, (h - TextHeight(text$))/2, text$, #Black, buttonBack) 
  StopDrawing() 
  gadId = ButtonImageGadget(num, x, y, w, h, ImageID(thisImg)) 
  ProcedureReturn gadId 
EndProcedure 

OpenWindow(0,0,0,400,300,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
CreateGadgetList(WindowID(0)) 
ButtonIconGadget(0,hIcon,120,130,160,44,"Some Text Too") 
Repeat    
  ev=WaitWindowEvent() 
  If EventWindow()=0 
    If ev=#PB_Event_Gadget 
      If EventGadget()=0 
         ;do something useful 
      EndIf 
    EndIf 
  EndIf 
Until ev=#PB_Event_CloseWindow  

And here is how to include the icon as a resource in your program (from the PORC resource compiler help in PellesC:
ICON resource statement

Purpose:
Defines an icon.

Syntax:
resource-ID ICON filename.ICO

resource-ID ICON

BEGIN

' XX XX ... '

END

The argument resource-ID is a numeric value, or a string, that identifies the icon. More than one icon can be present in the script file. The ID must be unique within the resource type.

The argument filename specifies the name of the ICO file. The name can be given with or without quotes. If the file cannot be found in the current directory, the standard places will be searched. See also compiler option /I.

The argument 'XX XX ...' specifies a sequence of hexadecimal bytes, surrounded by single quotes, equivalent of the ICO file content.

BEGIN and END may be replaced by { and }.

Example:
1 ICON app.ico

9 ICON “icons\\myapp.ico“

5 ICON

{

'00 00 02 00 01 00 20 20 00 00 00 00 00 00 30 01'
'00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00'

}
If you are going to include the icon as a resource, change the ico.s = " " line to reflect the ID you gave the icon in the resource file rather than the filename and change the last parameter in the LoadImage_() command from #LR_LOADFROMFILE to 0.
Last edited by netmaestro on Fri Mar 17, 2006 5:47 am, edited 6 times in total.
BERESHEIT
va!n
Addict
Addict
Posts: 1104
Joined: Wed Apr 20, 2005 12:48 pm

Post by va!n »

@netmaestro:
thanks for the source, but when enable the XP skin, t doesnt looks like an original buttongadget (the border seems to be ok but not the filled area!?)

Code: Select all

ico.s="d:\movie.ico"
hIcon=LoadImage_(GetModuleHandle_(0),@ico,#IMAGE_ICON,0,0,#LR_LOADFROMFILE)

Procedure ButtonIconGadget(num, hIcon, x, y, w, h, text$)
  buttonBack = GetSysColor_(#COLOR_BTNFACE)
  thisImg = CreateImage(#PB_Any, w, h)
  hDC=StartDrawing(ImageOutput(thisImg))
  Box(0, 0, w, h, buttonBack)
  DrawIconEx_(hDC, 5,5, hIcon, 0, 0, 0, #Null, #DI_NORMAL | #DI_COMPAT ) 
  DrawingFont(GetStockObject_(#DEFAULT_GUI_FONT))
  DrawText(50, (h - TextHeight(text$))/2, text$, #Black, buttonBack)
  StopDrawing()
  gadId = ButtonImageGadget(num, x, y, w, h, ImageID(thisImg))
  ProcedureReturn gadId
EndProcedure

OpenWindow(0,0,0,400,300,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ButtonIconGadget(0,hIcon,120,130,160,44,"Some Text Too")
ButtonGadget(1,120,70,160,44,"   Some Text Too")
Repeat   
  ev=WaitWindowEvent()
  If EventWindow()=0
    If ev=#PB_Event_Gadget
      If EventGadget()=0
         ;do something useful
      EndIf
    EndIf
  EndIf
Until ev=#PB_Event_CloseWindow 

va!n aka Thorsten

Intel i7-980X Extreme Edition, 12 GB DDR3, Radeon 5870 2GB, Windows7 x64,
User avatar
netmaestro
PureBasic Bullfrog
PureBasic Bullfrog
Posts: 8451
Joined: Wed Jul 06, 2005 5:42 am
Location: Fort Nelson, BC, Canada

Post by netmaestro »

Skinned Windows it is then. How does this look:

You need this (or use your own): http://www.networkmaestro.com/icons.zip

Code: Select all

;; Make sure XP Skins Support is checked in your compiler options 
;; and that setup.ico is in the program folder 
;; 
Global ButtonUpImage 
Global ButtonDownImage 
Global ButtonHoverImage 
Global hIcon=LoadImage_(GetModuleHandle_(0),"setup.ico",#IMAGE_ICON,32,32,#LR_LOADFROMFILE) 

Procedure ButtonCallback(hWnd, Message, wParam, lParam) 
  If IsImage(ButtonUpImage) And IsImage(ButtonDownImage) 
    If ChildWindowFromPoint_(WindowID(0),WindowMouseX(0),WindowMouseY(0))<>GadgetID(0) 
      If GetGadgetState(0)<>ImageID(ButtonUpImage) 
        SetGadgetState(0,ImageID(ButtonUpImage)) 
      EndIf 
    EndIf 
    Select message 
      Case #WM_SETCURSOR 
        If ChildWindowFromPoint_(WindowID(0),WindowMouseX(0),WindowMouseY(0))=GadgetID(0) 
          If GetAsyncKeyState_(#VK_LBUTTON)=0 
            If GetGadgetState(0)<>ImageID(ButtonHoverImage) 
              SetGadgetState(0,ImageID(ButtonHoverImage)) 
            EndIf 
          EndIf 
        EndIf          
      Case #WM_COMMAND 
        If ChildWindowFromPoint_(WindowID(0),WindowMouseX(0),WindowMouseY(0))=GadgetID(0) 
          SetGadgetState(0,ImageID(ButtonUpImage)) 
        EndIf 
      Case #WM_MOUSEACTIVATE 
        If ChildWindowFromPoint_(WindowID(0),WindowMouseX(0),WindowMouseY(0))=GadgetID(0) 
          SetGadgetState(0,ImageID(ButtonDownImage)) 
        EndIf 
    EndSelect 
  EndIf 
  Result = #PB_ProcessPureBasicEvents 
  ProcedureReturn Result 
EndProcedure 

Procedure DrawTImage(DC, ImageID, x, y, TransparentColor) ;Draw Transparent Image 
  Protected ImageList, BM.BITMAP 
  GetObject_(ImageID,SizeOf(BITMAP),BM.BITMAP) 
  ImageID = CopyImage_(ImageID,#IMAGE_BITMAP,BM\bmWidth,BM\bmHeight,0) 
  ImageList = ImageList_Create_(BM\bmWidth,BM\bmHeight,#ILC_COLORDDB|#ILC_MASK,1,0) 
  ImageList_AddMasked_(ImageList,ImageID,TransparentColor) 
  ImageList_Draw_(ImageList,0,DC,x,y,#ILD_TRANSPARENT) 
  ImageList_Destroy_(ImageList) 
  DeleteObject_(ImageID) 
EndProcedure 

ProcedureDLL SkinnedButtonIconGadget(num, hIcon, x, y, w, h, text$) 
  ButtonUpImage = CreateImage(#PB_Any, w, h) 
  ButtonDownImage = CreateImage(#PB_Any, w, h) 
  ButtonHoverImage = CreateImage(#PB_Any, w, h) 
  TextImage=CreateImage(#PB_Any,600,200) 
  StartDrawing(ImageOutput(TextImage)) 
    DrawingFont(GetStockObject_(#DEFAULT_GUI_FONT)) 
    tw=TextWidth(text$) 
    th=TextHeight(text$) 
  StopDrawing() 
  ResizeImage(TextImage,tw,th) 
  StartDrawing(ImageOutput(TextImage)) 
    DrawingFont(GetStockObject_(#DEFAULT_GUI_FONT)) 
    DrawText(0,0, text$, #Black,RGB(255,255,255)) 
  StopDrawing()  
  hDC=StartDrawing(ImageOutput(ButtonUpImage)) 
    Box(0,0,w,h,RGB(255,255,255)) 
    c=250:d=255 
    For i=2 To h-1 Step 3 
      Box(0,i,w-1,3,RGB(c,c,d)) 
      Select i 
        Case 0 To h*1/3 
         c-2 :d-1 
        Case h*1/3 To h*3/4 
         c-4 :d-3 
        Case h*3/4 To h 
         c-5 :d-5 
      EndSelect 
    Next 
    DrawIconEx_(hDC, 5,5, hIcon, h-10, h-10, 0, #Null, #DI_NORMAL | #DI_COMPAT ) 
    DrawTImage(hDC, ImageID(TextImage), h+5, h/2-th/2, RGB(255,255,255)) 
    StopDrawing() 
    hDC=StartDrawing(ImageOutput(ButtonDownImage)) 
    c=250:d=255 
    For i=h To 0 Step -2 
      Box(0,i,w-1,2,RGB(c,c,d)) 
      Select i 
        Case 0 To h*1/2 
         c-7 :d-5 
        Case h*1/2 To h 
         c-2 :d-2 
      EndSelect 
    Next 
    DrawIconEx_(hDC, 5,5, hIcon, h-10, h-10, 0, #Null, #DI_NORMAL | #DI_COMPAT ) 
    DrawTImage(hDC, ImageID(TextImage), h+5, h/2-th/2, RGB(255,255,255)) 
    StopDrawing() 
    hDC=StartDrawing(ImageOutput(ButtonHoverImage)) 
    Box(0,0,w,h,RGB(255,255,255)) 
    c=250:d=255 
    For i=2 To h-1 Step 3 
      Box(0,i,w-1,3,RGB(c,c,d)) 
      Select i 
        Case h*1/3 To h*3/4 
         c-4 :d-4 
        Case h*3/4 To h 
         c-7 :d-7 
      EndSelect 
    Next 
    DrawIconEx_(hDC, 5,5, hIcon, h-10, h-10, 0, #Null, #DI_NORMAL | #DI_COMPAT ) 
    DrawTImage(hDC, ImageID(TextImage), h+5, h/2-th/2, RGB(255,255,255)) 
  StopDrawing() 
  gadId = ButtonImageGadget(num, x, y, w, h, ImageID(ButtonUpImage)) 
  ProcedureReturn gadId 
EndProcedure 

OpenWindow(0,0,0,400,300,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
CreateGadgetList(WindowID(0)) 
SkinnedButtonIconGadget(0,hIcon,120,130,160,46,"Ico-Text Skinned") 
ButtonGadget(1,120,80,160,46,"Normal Skinned Button") 
SetWindowCallback(@ButtonCallback()) 
Repeat    
  ev=WaitWindowEvent() 
   If ev=#PB_Event_Gadget 
      If EventGadget()=0 
        ; Do something useful 
      EndIf 
  EndIf 
Until ev=#PB_Event_CloseWindow  
End 
The icon image will resize with the button, but it will look best if you size the button about 10 or so pixels higher than the original icon. So for a 32*32 icon, that would be say 42 to 46 px high. For a 16*16, that's 26-30 or so.
BERESHEIT
Sparkie
PureBatMan Forever
PureBatMan Forever
Posts: 2307
Joined: Tue Feb 10, 2004 3:07 am
Location: Ohio, USA

Post by Sparkie »

Ok, here's something else I came up with. It accomodates .BMP files with or without a mask color. I tested with 32 x 32 BMP.s with a Magenta mask in this example. I was only able to test this on XP so let me know what happens on Win 98/ Win 2K. I'm still tuning it up a bit so feel free to dig in and optimize at will. :)

Code: Select all

;/============================================================= 
;/ Code       : ButtonGadgets with BMP Icons
;/ Author     : Sparkie 
;/ Date       : 03/16/06 
;/ PB Version : PB 4.00 Beta7 
;/ OS Support : Windows 98/NT/2000/XP/Server 2003
;/ Ref        : /http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/winxpintro.asp
;/============================================================= 

;/=============================================== 
;/ Constants / Enumerations 
;/=============================================== 
#BCM_FIRST = $1600
#BCM_SETIMAGELIST = #BCM_FIRST + 2
#BUTTON_IMAGELIST_ALIGN_LEFT = 0

#MyWindow1 = 1 
#Dummy = 0
#MyButton1 = 1 
#MyButton2 = 2

;/=============================================== 
;/ Structure used for Button ImageList
;/=============================================== 
Structure _BUTTON_IMAGELIST
  himl.l
  margin.RECT
  uAlign.l
EndStructure
Global buttonImgList._BUTTON_IMAGELIST

;/=============================================== 
;/ Procedure - Create icon/text ButtonImageGadget 
;/ (Only used when XP theme not active)
;/=============================================== 
Procedure ButtonIconGadget(num, gadgetX, gadgetY, gadgetW, gadgetH, text$, imageNum, icoW, icoH, maskColor) 
  buttonBack = GetSysColor_(#COLOR_BTNFACE) 
  StartDrawing(ImageOutput(imageNum))
  ;...Replce mask color with Button color
  For x = 0 To icoW - 1
    For y = 0 To icoH - 1
      If Point(x, y) = maskColor
        Plot(x, y, buttonBack)
      EndIf
    Next y
  Next x
  StopDrawing()
  ;...Create image for ButtonImageGadget
  thisImg = CreateImage(#PB_Any, gadgetW, gadgetH) 
  StartDrawing(ImageOutput(thisImg)) 
  ;...Fill with Button Color
  Box(0, 0, gadgetW, gadgetH, buttonBack) 
  ;...Draw our Graphic image
  DrawImage(ImageID(imageNum), 5, (gadgetH - icoH)/2, icoW, icoH) 
  DrawingFont(getstockobject_(#DEFAULT_GUI_FONT)) 
  ;...Add our text
  DrawText(icoW + 10, (gadgetH - TextHeight(text$))/2, text$, #Black, buttonBack) 
  StopDrawing() 
  ;...Create ButtonImageGadget
  gadId = ButtonImageGadget(num, gadgetX, gadgetY, gadgetW, gadgetH, ImageID(thisImg)) 
  ProcedureReturn gadId 
EndProcedure 

;/=============================================== 
;/ Procedure - Create icon/text ButtonImageGadget 
;/ (Only used when XP theme is active)
;/=============================================== 
Procedure ButtonImageList(imgW, imgH, imageId, maskColor)
  ;...Add our image with mask
  hButtonImgList = ImageList_Create_(imgW, imgH, #ILC_COLOR24 | #ILC_MASK, 0, 2)
  ImageList_AddMasked_(hButtonImgList, imageId, maskColor)
  ;...Fill our Button ImageList strcuture
  With buttonImgList
    \uAlign = #BUTTON_IMAGELIST_ALIGN_LEFT
    \margin\top = 3
    \margin\bottom = 3
    \margin\left = 3
    \margin\right = 3 
  EndWith
  ProcedureReturn hButtonImgList
EndProcedure

;/=============================================== 
;/ Main Window
;/=============================================== 
If OpenWindow(#MyWindow1, 100, 100, 250, 200, "Buttons With Icons", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(#MyWindow1)) 
  
  ;...For now this is the best I could do to check for XP themes
  ButtonGadget(#Dummy, 0, 0, 0, 0, "Dummy Gadget to test for XP theme") 
  
  ;...If XP skins is enabled use Plan A
  If GetWindowTheme_(GadgetID(#Dummy))
    FreeGadget(#Dummy)
    ;...Create ButtonGadget 1
    ButtonGadget(#MyButton1, 75, 50, 100, 42, "Clock", #PB_Button_Left) 
    
    ;...Get our image for Button 1
    img1 = CatchImage(#PB_Any, ?ButtonIcon1)
    
    ;...Set ImageList for #MyButton1
    hImgList1 = ButtonImageList(32, 32, ImageID(img1), RGB(255, 0, 255))
    buttonImgList\himl = hImgList1
    SendMessage_(GadgetID(#MyButton1), #BCM_SETIMAGELIST, 0, @buttonImgList)
    
    ;...Create ButtonGadget 2
    ButtonGadget(#MyButton2, 75, 100, 100, 42, "Calculator", #PB_Button_Left) 
    
    ;...Get our image for Button 2
    img2 = CatchImage(#PB_Any, ?ButtonIcon2)
    
    ;...Set ImageList for #MyButton2
    hImgList2 = ButtonImageList(32, 32, ImageID(img2), RGB(255, 0, 255))
    buttonImgList\himl = hImgList2
    SendMessage_(GadgetID(#MyButton2), #BCM_SETIMAGELIST, 0, @buttonImgList)
  Else
    ;...Not running with XP skins so go to plan B
    FreeGadget(#Dummy)
    img1 = CatchImage(#PB_Any, ?ButtonIcon1)
    img2 = CatchImage(#PB_Any, ?ButtonIcon2)
    ButtonIconGadget(#MyButton1, 75, 50, 100, 42, "Clock", img1, 32, 32, RGB(255, 0, 255)) 
    ButtonIconGadget(#MyButton2, 75, 100, 100, 42, "Calculator", img2, 32, 32, RGB(255, 0, 255)) 
  EndIf
  ;/=============================================== 
  ;/ Main Event Loop
  ;/=============================================== 
  Repeat 
    event = WaitWindowEvent() 
  Until event = #PB_Event_CloseWindow 
  
  ;...Destroy image lists
  If hImgList1
    ImageList_Destroy_(hImgList1)
  EndIf
  If hImgList2
    ImageList_Destroy_(hImgList2)
  EndIf
EndIf 

End 

DataSection 
ButtonIcon1: 
Data.b $42,$4D,$72,$04,$00,$00,$00,$00,$00,$00,$72,$00,$00,$00,$28,$00
Data.b $00,$00,$20,$00,$00,$00,$20,$00,$00,$00,$01,$00,$08,$00,$00,$00
Data.b $00,$00,$00,$04,$00,$00,$C3,$0E,$00,$00,$C3,$0E,$00,$00,$0F,$00
Data.b $00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$00,$EF,$FF,$FF,$00,$F7,$F7
Data.b $E6,$00,$B5,$F7,$F7,$00,$AD,$B5,$9C,$00,$6B,$6B,$EF,$00,$84,$84
Data.b $73,$00,$FF,$00,$FF,$00,$42,$5A,$6B,$00,$42,$42,$31,$00,$08,$08
Data.b $9C,$00,$00,$08,$21,$00,$10,$08,$00,$00,$00,$08,$00,$00,$00,$00
Data.b $00,$00,$07,$07,$07,$06,$06,$04,$09,$09,$09,$06,$04,$03,$07,$07
Data.b $07,$07,$07,$03,$04,$04,$09,$06,$03,$06,$09,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$0E,$04,$00,$00,$00,$06,$04,$04,$09,$07
Data.b $0E,$07,$04,$04,$09,$06,$00,$00,$06,$0E,$07,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$07,$0E,$03,$00,$00,$04,$09,$0E,$0E,$0E
Data.b $0B,$0E,$0E,$0C,$04,$00,$00,$00,$0E,$07,$07,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$07,$07,$0E,$0C,$0E,$0B,$0A,$05,$05,$0A
Data.b $0B,$0B,$0E,$0E,$0E,$0B,$0E,$0E,$09,$07,$07,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$07,$09,$0B,$05,$05,$0B,$0B,$09,$06,$06
Data.b $09,$06,$06,$0B,$0E,$0E,$0B,$0B,$0E,$09,$07,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$0E,$0A,$05,$0E,$09,$01,$01,$01,$01,$01
Data.b $0D,$01,$01,$01,$01,$01,$0B,$0E,$0A,$0B,$0E,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$0E,$0A,$0A,$0E,$01,$01,$08,$01,$01,$01,$09
Data.b $0E,$01,$01,$01,$06,$09,$01,$03,$0E,$0A,$0A,$0A,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$0E,$0E,$0A,$0A,$01,$01,$01,$0E,$0E,$01,$01,$01
Data.b $06,$01,$01,$01,$0E,$09,$01,$01,$01,$0A,$0A,$0A,$05,$07,$07,$07
Data.b $07,$07,$07,$09,$0E,$05,$0E,$01,$01,$01,$01,$01,$01,$01,$01,$01
Data.b $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0E,$0B,$0A,$09,$07,$07
Data.b $07,$07,$07,$0E,$0E,$0B,$08,$04,$0C,$0E,$01,$01,$01,$01,$01,$01
Data.b $01,$01,$01,$01,$01,$01,$01,$09,$0E,$01,$01,$0E,$08,$0E,$07,$07
Data.b $07,$07,$04,$0E,$08,$0A,$04,$01,$06,$06,$01,$01,$01,$01,$01,$01
Data.b $01,$01,$01,$01,$01,$01,$01,$01,$09,$01,$01,$0B,$0B,$0E,$06,$07
Data.b $07,$07,$09,$0E,$05,$0B,$03,$01,$01,$01,$01,$01,$01,$01,$01,$01
Data.b $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$04,$0E,$0B,$0E,$07
Data.b $07,$07,$0C,$0E,$05,$0E,$06,$09,$03,$01,$01,$01,$01,$01,$01,$04
Data.b $0C,$01,$01,$01,$01,$01,$01,$01,$08,$0E,$01,$04,$0A,$0A,$0E,$07
Data.b $07,$07,$0E,$0E,$08,$0E,$0E,$06,$08,$01,$01,$01,$01,$01,$01,$06
Data.b $0E,$01,$01,$01,$01,$01,$01,$01,$0B,$0E,$01,$04,$0A,$0B,$0E,$07
Data.b $07,$07,$0E,$08,$05,$0E,$0E,$01,$01,$01,$01,$01,$01,$01,$01,$0B
Data.b $0E,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0C,$0A,$0E,$0E,$07
Data.b $07,$07,$06,$0A,$05,$0E,$0E,$09,$01,$04,$01,$01,$01,$01,$01,$0A
Data.b $0B,$09,$01,$01,$01,$01,$01,$06,$04,$01,$01,$0E,$0A,$0B,$06,$07
Data.b $07,$07,$07,$0E,$05,$05,$0E,$0E,$0C,$09,$09,$01,$01,$01,$01,$0B
Data.b $0A,$04,$01,$01,$01,$01,$01,$09,$08,$01,$06,$0A,$05,$0E,$07,$07
Data.b $07,$07,$07,$0A,$0A,$05,$0A,$0B,$0E,$01,$01,$01,$01,$01,$01,$09
Data.b $09,$01,$01,$01,$01,$01,$01,$04,$01,$04,$0E,$0A,$0E,$07,$07,$07
Data.b $07,$07,$07,$07,$0A,$0A,$05,$05,$0E,$0E,$01,$03,$0C,$01,$08,$00
Data.b $08,$01,$01,$01,$09,$01,$01,$01,$01,$0E,$0A,$0E,$0E,$07,$07,$07
Data.b $07,$07,$07,$07,$04,$0E,$05,$05,$0A,$0E,$0E,$0E,$09,$01,$06,$04
Data.b $0C,$04,$01,$01,$09,$01,$01,$01,$0E,$0E,$0E,$0E,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$0E,$0A,$05,$0A,$0E,$0E,$0E,$06,$02,$04
Data.b $06,$03,$01,$01,$01,$05,$0B,$0E,$0E,$0E,$0E,$07,$07,$07,$07,$07
Data.b $07,$07,$03,$0E,$06,$0E,$0E,$0C,$0E,$05,$05,$0A,$0B,$0B,$0E,$0E
Data.b $0B,$0A,$0A,$0A,$0E,$0E,$0E,$0B,$0E,$09,$07,$07,$04,$0E,$08,$07
Data.b $07,$07,$06,$0E,$0E,$08,$06,$02,$0C,$08,$0E,$0A,$0A,$05,$05,$08
Data.b $0A,$0A,$0E,$0E,$0E,$0E,$0E,$03,$08,$02,$0E,$0E,$03,$0E,$09,$07
Data.b $07,$07,$07,$0E,$08,$03,$03,$03,$08,$06,$0E,$06,$0E,$0E,$0E,$0E
Data.b $0E,$0E,$0E,$0E,$0E,$04,$02,$04,$0B,$0E,$0E,$03,$08,$0E,$07,$07
Data.b $07,$07,$07,$07,$06,$0B,$03,$03,$08,$0E,$0E,$03,$07,$07,$07,$07
Data.b $03,$04,$00,$00,$04,$08,$03,$03,$03,$03,$08,$0E,$04,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$0E,$09,$0B,$0E,$0B,$03,$0B,$0E,$07,$07
Data.b $0E,$0E,$06,$08,$08,$03,$03,$08,$0E,$0E,$0E,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$04,$0E,$03,$06,$0B,$09,$0E,$0E,$08,$07,$07
Data.b $07,$07,$07,$07,$0E,$0E,$09,$0E,$04,$07,$0E,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$04,$07,$07,$08,$04,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$07,$0E,$07,$07,$07,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$07,$07,$07,$06,$07,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$07,$0E,$07,$07,$07,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$0E,$03,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$0E,$09,$07,$07,$07,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$0E,$0B,$04,$07,$07
Data.b $07,$07,$07,$07,$09,$0E,$0E,$07,$07,$07,$07,$07,$07,$07,$07,$07
Data.b $07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$04,$0B,$0B,$0E
Data.b $0B,$0E,$0E,$0E,$09,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07
Data.b $07,$07

ButtonIcon2: 
Data.b $42,$4D,$76,$02,$00,$00,$00,$00,$00,$00,$76,$00,$00,$00,$28,$00
Data.b $00,$00,$20,$00,$00,$00,$20,$00,$00,$00,$01,$00,$04,$00,$00,$00
Data.b $00,$00,$00,$02,$00,$00,$C3,$0E,$00,$00,$C3,$0E,$00,$00,$10,$00
Data.b $00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$00,$F7,$FF,$FF,$00,$97,$FA
Data.b $FF,$00,$79,$FF,$FF,$00,$78,$F2,$FF,$00,$66,$E2,$FF,$00,$F4,$DC
Data.b $AB,$00,$4D,$C5,$FF,$00,$52,$A2,$E1,$00,$AC,$92,$76,$00,$3A,$74
Data.b $A0,$00,$FF,$00,$FF,$00,$46,$2C,$21,$00,$11,$1B,$29,$00,$00,$11
Data.b $2B,$00,$00,$00,$00,$00,$BB,$BB,$BB,$BB,$BB,$BB,$1C,$FF,$FB,$BB
Data.b $BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$B0,$CF,$FA,$1F,$FF,$BB
Data.b $BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$6C,$FD,$58,$CF,$FF,$DA,$FB
Data.b $BB,$BB,$BB,$BB,$BB,$BB,$BB,$B6,$FF,$D4,$AF,$FD,$84,$33,$AE,$8F
Data.b $BB,$BB,$BB,$BB,$BB,$BB,$B9,$FD,$2A,$FF,$A5,$54,$43,$34,$38,$F8
Data.b $F6,$BB,$BB,$BB,$BB,$BB,$F8,$2C,$FA,$55,$54,$44,$5D,$FF,$A3,$7F
Data.b $8F,$6B,$BB,$BB,$BB,$BB,$FE,$E7,$54,$44,$4A,$FF,$8F,$CF,$73,$47
Data.b $F8,$F6,$BB,$BB,$BB,$BB,$F7,$55,$48,$D7,$4F,$9F,$A7,$57,$DD,$44
Data.b $7F,$8F,$9B,$BB,$BB,$BB,$BF,$55,$EF,$FF,$3A,$DA,$AD,$5F,$CF,$44
Data.b $47,$F8,$F9,$BB,$BB,$BB,$B9,$E5,$8F,$F8,$42,$7F,$CF,$7A,$87,$DD
Data.b $44,$8F,$7F,$CB,$BB,$BB,$BB,$FA,$54,$7F,$FA,$3F,$D7,$53,$5F,$CF
Data.b $34,$4A,$F7,$FC,$BB,$BB,$BB,$BF,$75,$AF,$CF,$22,$8F,$F7,$38,$8A
Data.b $F8,$44,$DD,$7F,$FB,$BB,$BB,$B9,$E7,$58,$8F,$F5,$FF,$E5,$7E,$F9
Data.b $CF,$A4,$4F,$A7,$FF,$BB,$BB,$BB,$F8,$54,$FC,$FA,$37,$DF,$C9,$69
Data.b $FF,$84,$45,$F7,$7F,$CB,$BB,$BB,$BF,$75,$7A,$5A,$FC,$96,$9C,$EA
Data.b $53,$37,$44,$8F,$77,$F6,$BB,$BB,$B6,$F7,$54,$FC,$9C,$FE,$A5,$35
Data.b $AF,$FF,$E3,$3D,$A7,$E9,$BB,$BB,$BB,$CA,$75,$8F,$E8,$33,$3A,$FF
Data.b $FC,$20,$FF,$33,$F8,$A9,$BB,$BB,$BB,$BF,$A7,$54,$33,$8E,$FF,$C2
Data.b $11,$AF,$FF,$D2,$4F,$A9,$BB,$BB,$BB,$BB,$F8,$55,$8F,$FC,$21,$2A
Data.b $FF,$F9,$FF,$F8,$37,$F9,$BB,$BB,$BB,$BB,$0F,$75,$AF,$92,$DF,$FF
Data.b $90,$00,$FF,$FD,$33,$F9,$BB,$BB,$BB,$BB,$B6,$F7,$4E,$FF,$F0,$00
Data.b $00,$00,$FF,$A5,$AF,$F0,$BB,$BB,$BB,$BB,$BB,$9F,$73,$FF,$C0,$00
Data.b $00,$00,$DF,$FF,$FF,$00,$BB,$BB,$BB,$BB,$BB,$B9,$F7,$5F,$C0,$00
Data.b $00,$00,$9F,$60,$0C,$F0,$BB,$BB,$BB,$BB,$BB,$BB,$9F,$78,$F0,$00
Data.b $00,$00,$0F,$00,$00,$F6,$BB,$BB,$BB,$BB,$BB,$BB,$B6,$FF,$F0,$00
Data.b $00,$00,$0F,$60,$00,$9D,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$F1,$00
Data.b $00,$00,$09,$F1,$00,$0F,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$DD,$00
Data.b $00,$00,$00,$FF,$10,$0F,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BF,$00
Data.b $00,$00,$00,$0F,$F6,$0F,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$B9,$F0
Data.b $00,$00,$00,$00,$9F,$FF,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$DF
Data.b $00,$00,$00,$00,$01,$FB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BC
Data.b $F0,$00,$00,$00,$DF,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB
Data.b $BF,$FF,$FF,$FC,$BB,$BB
EndDataSection
What goes around comes around.

PB 5.21 LTS (x86) - Windows 8.1
User avatar
netmaestro
PureBasic Bullfrog
PureBasic Bullfrog
Posts: 8451
Joined: Wed Jul 06, 2005 5:42 am
Location: Fort Nelson, BC, Canada

Post by netmaestro »

That's really great Sparkie! I knew there would be a "right" way to do themed buttons. I went the long way round with my code but I figured there must be a better way. I just didn't know what it was.
BERESHEIT
Post Reply