#Fon=$C8C8C8 ;RGB(200, 200, 200)
#Blac=$000000 ;RGB(0, 0, 0)
#Blu=$FF0000 ;RGB(0, 0, 255)
;#Purp=$FFFF00 ;RGB(0, 255, 255)
;#Yel=$00FFFF ;RGB(255, 255, 0)
#WinID=0
#Width=450
#Height=420
#WinStyle = #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget |#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget
#WinColor=#Fon
;- Нумерованые константы
;{
Enumeration
#G_1=1 : #G_2 : #G_3 : #G_4
#G_5 : #G_6 : #G_7
#G_8 : #G_9 : #G_10
#G_11 : #G_12 : #G_13 : #G_14
EndEnumeration
;}
#X=0 : #Y=1
Global Dim Poi.u(#G_14,1)
;{ координаты элементов
Poi(#G_1,#X)=5 : Poi(#G_1,#Y)=5
Poi(#G_2,#X)=105 : Poi(#G_2,#Y)=5
Poi(#G_3,#X)=205 : Poi(#G_3,#Y)=5
Poi(#G_4,#X)=305 : Poi(#G_4,#Y)=5
Poi(#G_5,#X)=5 : Poi(#G_5,#Y)=105
Poi(#G_6,#X)=105 : Poi(#G_6,#Y)=105
Poi(#G_7,#X)=205 : Poi(#G_7,#Y)=105
Poi(#G_8,#X)=5 : Poi(#G_8,#Y)=205
Poi(#G_9,#X)=105 : Poi(#G_9,#Y)=205
Poi(#G_10,#X)=205 : Poi(#G_10,#Y)=205
Poi(#G_11,#X)=5 : Poi(#G_11,#Y)=305
Poi(#G_12,#X)=105 : Poi(#G_12,#Y)=305
Poi(#G_13,#X)=205 : Poi(#G_13,#Y)=305
Poi(#G_14,#X)=305 : Poi(#G_14,#Y)=305
;}
Procedure RoundedBox(X, Y, W, H, R,FrT,FrC,FiC)
Box(X,Y,W,H,#Fon) ;Цвет фона Windows при выводе изображения
;Box(0, 0, 200,150,$B5D4E6)
x1=X+R
x2=X+W-R
y1=Y+R
y2=Y+H-R
Circle(x1,y1, R,FrC)
Circle(x1,y1, R-FrT,FiC)
Circle(x2,y1,R,FrC)
Circle(x2-1,y1,R-FrT,FiC)
Circle(x1,y2-1,R,FrC)
Circle(x1,y2-1,R-FrT,FiC)
Circle(x2,y2-1,R,FrC)
Circle(x2-1,y2-1,R-FrT,FiC)
Box(x1,Y,W-2*R,H,FrC)
Box(x1,Y+FrT,W-2*R,H-2*FrT,FiC)
Box(X,y1,W+1,H-2*R,FrC)
Box(X+FrT,y1,W-2*FrT,H-2*R,FiC)
EndProcedure
Procedure Set_Image1 (w.i=100, h.i=100)
k=0
If IsImage(1)=0
CreateImage(1, w, h*0.925)
k=1
EndIf
If ImageWidth(1)<>w Or ImageHeight(1)<>h*0.925
ResizeImage(1,w,h*0.925)
k=1
EndIf
If StartDrawing(ImageOutput(1)) And k
;Поскольку новое изображение имеет черный фон, заполняем его другим цветом:
Box(0, 0, w, h*0.925, #Fon)
;Рисует прямоугольник с закругленными углами
ww=w*0.9 : hh=h*0.925-h/5-1
RoundedBox((w-ww)/2, h/5, ww, hh, w/14,1,#Blac,#Blu)
EndIf
StopDrawing()
EndProcedure
Procedure M_Gadget (id.i, x.i, y.i, w.i, h.i, Title.s)
s1.f=w/100
s2.f=h/100
s.f=1
If s1<=s2 : s=s1 : ElseIf s2<s1 : s=s2 : EndIf
Set_Image1 (w,h)
CopyImage(1, id+10)
LoadFont(0, "Arial", 10*s)
StartDrawing(ImageOutput(id+10))
DrawingFont(FontID(0))
DrawText( x+30*s1, y+30*s2, Title , #Blac , #Blu )
DrawText( x+30*s1, y+50*s2, Str(id) , #Blac , #Blu )
StopDrawing()
ImageGadget(id, x, y, w, h, ImageID(id+10))
;TextGadget(1001+id*10, x+20*s1, y+25*s2, 70*s1, 17*s2, Title, #PB_Text_Center)
;TextGadget(1002+id*10, x+20*s1, y+55*s2, 70*s1, 17*s2, Title, #PB_Text_Center)
;SetGadgetColor(1001+id*10, #PB_Gadget_BackColor, #Blu)
;SetGadgetColor(1002+id*10, #PB_Gadget_BackColor, #Blu)
;LoadFont(0, "Arial", 11*s)
;SetGadgetFont(1001+id*10, FontID(0))
;SetGadgetFont(1002+id*10, FontID(0))
EndProcedure
Procedure Resize_M_Gadget(id.i, x.i, y.i, w.i, h.i, k=0)
s1.f=w/100
s2.f=h/100
s.f=1
If s1<=s2 : s=s1 : ElseIf s2<s1 : s=s2 : EndIf
Set_Image1 (w,h)
CopyImage(1, id+10)
ResizeGadget(id, x, y, #PB_Ignore, #PB_Ignore)
LoadFont(0, "Arial", 10*s)
StartDrawing(ImageOutput(id+10))
DrawingFont(FontID(0))
DrawText( x+30*s1, y+30*s2, "123" , #Blac , #Blu )
DrawText( x+30*s1, y+50*s2, "123" , #Blac , #Blu )
StopDrawing()
SetGadgetState(id,ImageID(id+10))
; ResizeGadget(1001+id*10, GadgetX(id)+20*s1, GadgetY(id)+25*s2, 70*s1, 17*s2)
; ResizeGadget(1002+id*10, GadgetX(id)+30*s1, GadgetY(id)+44*s2, 50*s1, 17*s2)
;
; LoadFont(0, "Arial", 11*s)
; SetGadgetFont(1001+id*10, FontID(0))
; SetGadgetFont(1002+id*10, FontID(0))
EndProcedure
Procedure Resize(s.f)
Resize_M_Gadget(#G_1, Poi(#G_1,#X)*s, Poi(#G_1,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_2, Poi(#G_2,#X)*s, Poi(#G_2,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_3, Poi(#G_3,#X)*s, Poi(#G_3,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_4, Poi(#G_4,#X)*s, Poi(#G_4,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_5, Poi(#G_5,#X)*s, Poi(#G_5,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_6, Poi(#G_6,#X)*s, Poi(#G_6,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_7, Poi(#G_7,#X)*s, Poi(#G_7,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_8, Poi(#G_8,#X)*s, Poi(#G_8,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_9, Poi(#G_9,#X)*s, Poi(#G_9,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_10, Poi(#G_10,#X)*s, Poi(#G_10,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_11, Poi(#G_11,#X)*s, Poi(#G_11,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_12, Poi(#G_12,#X)*s, Poi(#G_12,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_13, Poi(#G_13,#X)*s, Poi(#G_13,#Y)*s, 100*s, 100*s)
Resize_M_Gadget(#G_14, Poi(#G_14,#X)*s, Poi(#G_14,#Y)*s, 100*s, 100*s)
ProcedureReturn
EndProcedure
OpenWindow(#WinID,0,0,#Width,#Height,"Test",#WinStyle)
SmartWindowRefresh(#WinID, 1) ; Это для уменьшения мерцаний окна, при изменении его размеров.
SetWindowColor(#WinID, #WinColor) ; устанавливаем цвет окна
;ButtonGadget(1,5,5,190,20,"Button")
M_Gadget (#G_1, Poi(#G_1,#X), Poi(#G_1,#Y), 100, 100, "N_1")
M_Gadget (#G_2, Poi(#G_2,#X), Poi(#G_2,#Y), 100, 100, "N_2")
M_Gadget (#G_3, Poi(#G_3,#X), Poi(#G_3,#Y), 100, 100, "N_3")
M_Gadget (#G_4, Poi(#G_4,#X), Poi(#G_4,#Y), 100, 100, "N_4")
M_Gadget (#G_5, Poi(#G_5,#X), Poi(#G_5,#Y), 100, 100, "N_5")
M_Gadget (#G_6, Poi(#G_6,#X), Poi(#G_6,#Y), 100, 100, "N_6")
M_Gadget (#G_7, Poi(#G_7,#X), Poi(#G_7,#Y), 100, 100, "N_7")
M_Gadget (#G_8, Poi(#G_8,#X), Poi(#G_8,#Y), 100, 100, "N_8")
M_Gadget (#G_9, Poi(#G_9,#X), Poi(#G_9,#Y), 100, 100, "N_9")
M_Gadget (#G_10, Poi(#G_10,#X), Poi(#G_10,#Y), 100, 100, "N_10")
M_Gadget (#G_11, Poi(#G_11,#X), Poi(#G_11,#Y), 100, 100, "N_11")
M_Gadget (#G_12, Poi(#G_12,#X), Poi(#G_12,#Y), 100, 100, "N_12")
M_Gadget (#G_13, Poi(#G_13,#X), Poi(#G_13,#Y), 100, 100, "N_13")
M_Gadget (#G_14, Poi(#G_14,#X), Poi(#G_14,#Y), 100, 100, "N_14")
Repeat
Event=WaitWindowEvent()
If Event=#PB_Event_SizeWindow
;ResizeGadget(1,5,5,WindowWidth(0)-10,WindowHeight(0)-10)
xx.f= WindowWidth(#WinID) / #Width
yy.f= WindowHeight(#WinID) / #Height
ff.f=0
If xx<=yy : ff= xx : Else : ff=yy : EndIf
If ff<0.6 : ff=0.6 : EndIf
; Resize(ff)
EndIf
Until Event=#PB_Event_CloseWindow