Существует дизайнерская программа - Atrise Golden Section, программа очень удобная.
В двух словах - это линейка.
Полностью прозрачное окно, только вертикальные и горизонтальные линии видно.
И текст, показывающий ширину и высоту при изменении размеров.
Пробую что то похожее сделать на PureBasic.
Если убрать бордюр окна, то не получается изменять размер?
При изменении размера сильное мерцание?
Можно каким то образом сделать окно полностью прозрачное, а линии нет?
Enumeration #Window_0 #x #y #wid #y0 #y1 #x0 #x1 EndEnumeration ; ///////////////////////Гаджет линия///////////////////////////////// Procedure LineGadgetHeight(Gadget, x, y, Height, color) Im=CreateImage(#PB_Any, 1, Height) If Im If StartDrawing(ImageOutput(Im)) Line(0,0, 1,Height ,color) StopDrawing() ImageGadget(Gadget,x, y, 1,Height,ImageID(Im)) EndIf EndIf EndProcedure Procedure LineGadgetWidth(Gadget, x, y, Width, color) Im=CreateImage(#PB_Any, Width, 1) If Im If StartDrawing(ImageOutput(Im)) Line(0,0, Width,1 ,color) StopDrawing() ImageGadget(Gadget,x, y, Width,1,ImageID(Im)) EndIf EndIf EndProcedure ; ////////////////////////////////////////////////////////////////////// hWnd = OpenWindow (#Window_0, 0, 0, 700, 200, "Линейка", #PB_Window_SystemMenu |#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_BorderLess ) StickyWindow(#Window_0, 1) SetWindowColor(#Window_0,$000000) SmartWindowRefresh(#Window_0 ,1) ; для уменьшения мигания окна при изменении размера TextGadget(#wid, 0, 0, 50, 14, "") ; текст малого окна SetGadgetColor(#wid, #PB_Gadget_BackColor, $000000) SetGadgetColor(#wid, #PB_Gadget_FrontColor, $ffffff) LineGadgetWidth(#x0,0,0 , 1680, $0000FF) ; горизонтальная линия первая LineGadgetWidth(#x, 0, WindowHeight(#Window_0)/2, 1680, $0000FF) ; горизонтальная линия средняя LineGadgetWidth(#x1, 0, 199, 1680, $0000FF) ; горизонтальная линия последняя LineGadgetHeight(#y0, 0,0 , 1050, $0000FF) ; вертикальная линия первая LineGadgetHeight(#y, WindowWidth(#Window_0)/2,0 , 1050, $0000FF) ; вертикальная линия средняя LineGadgetHeight(#y1, 699,0 , 1050, $0000FF) ; вертикальная линия последняя Repeat Event = WaitWindowEvent() SetGadgetText(#wid, Str(WindowWidth(#Window_0)/2)+" x "+Str(WindowHeight(#Window_0)/2)) ; параметры малого окна SetWindowTitle(#Window_0, "ширина: "+Str(WindowWidth(#Window_0))+" высота: "+Str(WindowHeight(#Window_0))) ; изменяем заголовок ResizeGadget(#x, #PB_Ignore,WindowHeight(#Window_0)/2, #PB_Ignore, #PB_Ignore) ResizeGadget(#y, WindowWidth(#Window_0)/2,#PB_Ignore, #PB_Ignore, #PB_Ignore) ResizeGadget(#x1,#PB_Ignore,WindowHeight(#Window_0)-1,#PB_Ignore,#PB_Ignore) ResizeGadget(#y1, WindowWidth(#Window_0)-1,#PB_Ignore, #PB_Ignore, #PB_Ignore) SetWindowsTransparency(hWnd, 170) ; полупрозрачное окно If Event = #PB_Event_CloseWindow Break EndIf ForEver
Отредактировано mirashic (10.02.2010 22:08:53)