Просмотров: 4445 | Дата: 04.07.2022 | Коментарии (0)

SkinFeature








Skinfeature позволяет разрабатывать уникальные стили, используя творческий подход для ваших интерактивных графических интерфейсов и многое другое.

Skinfeature совместима с широким спектром языков программирования, включая Visual Basic, Visual C + +, Delphi, Borland C + + Builder,PureBasic, Microsoft DotNet, и Win32 SDK

Skinfeature технология может использоваться для применения скинов для всех визуальных элементов приложения Windows: стандартные элементы управления (список, редактировать, комбинированные, прогресс, прокрутки, кнопки, вкладки и т.д.),
все не клиентской области (заголовка, системное меню, панели инструментов и т.д.), сообщения коробки,
и все общие диалоговые окна (открытия файла, сохранение, печать, предварительный просмотр, найдите папку или файл, выбрать цвет и т.д.)

Применительно к PureBasic:
За предоставленную информацию особая благодарность pablov: http://purebasic.info

Пример реализации кода для PB 4.41:  

;=============================================================================================
If OpenPreferences("skin.ini") 
 nomer.s=ReadPreferenceString("nomer", "")
 skin.s=ReadPreferenceString("skin"+nomer, "")
 ClosePreferences()
EndIf 
;=============================================================================================
Global UnLoadSkin.l
Procedure Skin(skin.s)
OpenLibrary(0, "SkinFeature.dll")
InitializeSkin.l = GetFunction(0, "InitializeSkin")
LoadSkinFile.l = GetFunction(0, "LoadSkinFile")
UnLoadSkin.l = GetFunction(0, "UnLoadSkin")
InitLicenKeys.l = GetFunction(0, "InitLicenKeys")
rrr.s="Skin/"+skin.s
CallFunctionFast(InitializeSkin)
CallFunctionFast(InitLicenKeys, @"********-****-****-****-*************") 
CallFunctionFast(LoadSkinFile, @rrr.s, @"") ; Надеваем скин из файла на диске
EndProcedure
Skin(skin.s)
;============================================================================================= 

Enumeration
 #Window_0
 #Button_0
 #Button_2
 #Skin
 #CheckBox_3
 #ScrollBar_4
 #Option_5
 #String_6
 #Panel_7
 #Text_8
 #Editor_9
 #Track
EndEnumeration

 If OpenWindow(#Window_0, 450, 200, 455, 300, " Стиль: Corona", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_Invisible )
 PureCOLOR_SetWindowColor(#Window_0,RGB(240, 240, 240))
 TrackBarGadget(#Track,10,40,180,20,0,100) 
 SetGadgetState(#Track, 50) 
 ButtonGadget(#Button_0, 15, 205, 105, 20, "Gadget_0")
 ButtonGadget(#Button_2, 125, 205, 105, 20, "Gadget_2")
 ButtonGadget(#Skin, 15, 240, 300, 25, "Сменить стиль")
 CheckBoxGadget(#CheckBox_3, 10, 155, 125, 20, "Gadget_3")
 ScrollBarGadget(#ScrollBar_4, 5, 120, 225, 20, 0, 100, 25)
 OptionGadget(#Option_5, 10, 175, 85, 15, "Gadget_5")
 StringGadget(#String_6, 5, 75, 220, 20, "Gadget_6")
 TextGadget(#Text_8, 235, 75, 180, 20, "Gadget_8")
 EditorGadget(#Editor_9, 5, 10, 415, 25)
 PanelGadget(#Panel_7, 240, 115, 190, 110)
 AddGadgetItem(#Panel_7, -1, "Tab #1")
 AddGadgetItem(#Panel_7, -1, "Tab #2")
 CloseGadgetList()
 EndIf

HideWindow(#Window_0,0)
Repeat
Event = WaitWindowEvent() 
Window = EventWindow() 
Gadget = EventGadget()
 Select Event
 Case #PB_Event_Gadget
 Select EventGadget()
 Case #Skin
 If Val(nomer)=27
 nomer="1"
 EndIf
 nomer.s=Str(Val(nomer)+1) 
 OpenPreferences("skin.ini")
 WritePreferenceString("nomer",nomer.s)
 ClosePreferences()
 RunProgram(ProgramFilename())
 Break
 EndSelect 
 EndSelect 
If Event = #PB_Event_CloseWindow
 Break 
EndIf
ForEver

CallFunctionFast(UnLoadSkin)


;


Пример скринов для разных стилей:







В архиве несколько вариантов подключения SkinFeature.dll, и код её запаковки в SkinFeature.pac
И папка Skin с 27 вариантами готовых стилей.

Подключение, когда прячим dll в exe файл имеет некоторые особенности:
В файле Skin.rc прописываем путь к нашему файлу стиля .rss
В исходнике указываем путь к файлу ресурса Skin.rc (Компилятор >>> Настройки компилятора >>> ресурсы >>> Добавить ...указать путь)

Visual Skin Editor

На официальном сайте www.skinui.com скачиваем визуальный редактор стилей Visual Skin Editor


Пользоваться не сложно, создаём новый стиль или редактируем уже готовый,
загружаем свои картинки для стилей и применяет их...
Вытянуть изображения с помощью встроенных инструментов вроде нет возможности. Создаем скриншот всего окна и обрабатываем его в Фотошопе...

Программа платная и имеет Trial период....

Dark Soft style

Фото программы с применением стиля Dark Soft и без стиля:







Enumeration
 #Window_0
 #D240:#D360:#D480:#D720:#Dflv:
 #Tex4:
 #Cont1:#Cont2
 #Web_VK:
 #Panel_1:#Panel_2:#Panel_3:
 #Spisok:#Search:
 #Poisk
EndEnumeration

If OpenWindow(#Window_0,0,0,820,485,"Dark Soft style",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_Invisible)
 PureCOLOR_SetWindowColor(#Window_0,RGB(16, 16, 16)) 
 ButtonGadget(#D240,525,400,40,20, "240")
 ButtonGadget(#D360,570,400,40,20, "360")
 ButtonGadget(#D480,615,400,40,20, "480")
 ButtonGadget(#D720,660,400,40,20, "720")
 ButtonGadget(#Dflv,735,400,40,20, "flv")
 ;------------------------------------------------
 PanelGadget(#Panel_1,-5,-7,850,31)
 HyperLinkGadget(#Tex4,20,10,90,15,"Строка текста",RGB(255, 255, 255))
 PureCOLOR_SetGadgetColor(#Tex4,RGB(243, 243, 243), #PureCOLOR_DontSetBackColor)
 SetGadgetColor(#Tex4,#PB_Gadget_FrontColor,RGB(116, 116, 116))
 CloseGadgetList()
 ;------------------------------------------------
 PanelGadget(#Panel_2,-5,425,850,41)
 StringGadget(#Search,35,12,220,20,"National Geographic") 
 PureCOLOR_SetGadgetColor(#Search,RGB(116, 116, 116),RGB(51, 51, 51)) 
 ButtonGadget(#Poisk,280,12,100,20, "Поиск") 
 CloseGadgetList()
 ;------------------------------------------------
 PanelGadget(#Panel_3,10,30,502,390)
 ContainerGadget(#Cont1,10,15,482,360, #PB_Container_BorderLess) 
 WebGadget(#Web_VK,0,0,500,380,"logo.html") ;
 CloseGadgetList()
 CloseGadgetList()
 ;------------------------------------------------
 ContainerGadget(#Cont2,525,35,272,355,#PB_Container_BorderLess) 
 ListIconGadget(#Spisok,0,0,272,355,"Время",50,#PB_ListIcon_GridLines) 
 SetGadgetColor(#Spisok, #PB_Gadget_BackColor, RGB(16, 16, 16)) 
 SetGadgetColor(#Spisok, #PB_Gadget_FrontColor,RGB(112, 112, 112)) 
 SetGadgetColor(#Spisok, #PB_Gadget_LineColor, RGB(41, 41, 41)) 
 AddGadgetColumn(#Spisok,0, " Результат", 200)
 CloseGadgetList()
 EndIf

HideWindow(#Window_0,0)

Repeat
Event = WaitWindowEvent() 
Until Event = #PB_Event_CloseWindow


If rez=1
 CallFunctionFast(UnLoadSkin) 
EndIf
;












Сайт посвящён языку программирования PureBasic — коммерческий компилятор языка программирования, использующего синтаксис BASIC. Предназначен для создания кроссплатформенных приложений для AmigaOS, Linux, Microsoft Windows, Windows NT и Mac OS X. Разработан компанией Fantaisie Software.