Basic Univers
Macro ImageGadgetBorderWidth()
GetSystemMetrics_(#SM_CXEDGE)
EndMacro
Macro ImageGadgetBorderHeight()
GetSystemMetrics_(#SM_CYEDGE)
EndMacro
Procedure.l SetImageGadgetBorder(Gadget.l, State.l)
Protected Set.l = #False, GadgetID.l, Style.l
Protected Width.l, Height.l, Change.l = #False
GadgetID = GadgetID(Gadget)
If GadgetID
Style = GetWindowLong_(GadgetID, #GWL_EXSTYLE)
Width = GadgetWidth(Gadget)
Height = GadgetHeight(Gadget)
If State
If Not Style & #PB_Image_Border
Width + ImageGadgetBorderWidth() * 2
Height + ImageGadgetBorderHeight() * 2
Style | #PB_Image_Border
Change = #True
EndIf
Else
If Style & #PB_Image_Border
Width - ImageGadgetBorderWidth() * 2
Height - ImageGadgetBorderHeight() * 2
Style & ~#PB_Image_Border
Change = #True
EndIf
EndIf
If Change
SetWindowLong_(GadgetID, #GWL_EXSTYLE, Style)
SetWindowPos_(GadgetID, 0, 0, 0, Width, Height, #SWP_NOMOVE | #SWP_FRAMECHANGED)
EndIf
Set = #True
EndIf
ProcedureReturn Set
EndProcedure
CreateImage(0, 100, 80)
If StartDrawing( ImageOutput(0) )
Box(0, 0, 100, 80, #Red)
Circle( 0, 0, 5, #Blue)
Circle( 0, 80, 5, #Blue)
Circle(100, 0, 5, #Blue)
Circle(100, 80, 5, #Blue)
StopDrawing()
EndIf
If OpenWindow(0, 0, 0, 340, 100, "SetImageGadgetBorder", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
ImageGadget(0, 10, 10, 100, 83, ImageID(0))
ImageGadget(1, 120, 10, 100, 83, ImageID(0), #PB_Image_Border)
ImageGadget(2, 230, 10, 100, 83, ImageID(0))
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
SetImageGadgetBorder(0, #False)
SetImageGadgetBorder(1, #False)
SetImageGadgetBorder(2, #False)
SetImageGadgetBorder(EventGadget(), #True)
EndIf
Until Event = #PB_Event_CloseWindow
EndIf