Тема: DF_GUI v0.5
Показать сообщение отдельно
Старый 07.11.2007, 00:09   #1
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Смущение DF_GUI v0.5

version 0.5


[ ОПИСАНИЕ ]~~~~~~~~~~~~~~~~~~~~~~
DF_GUI - это система для работы с различными элементами.
В моей GUI системы реализованы следующие элементы:

1. Окно
2. Текст
3. Изображение
4. Поле ввода.
5. Скроллер.
6. Лист


Каждый элемент может рисоватся как с помощью линий и прямоугольников, так и с помощью ваших рисунков.

[ СКРИНШОТЫ ]~~~~~~~~~~~~~~~~~~~~~~

Есть 3 типа вывода кнопок:

Так же можно и вытворять с окнами.

А можно настраивать всем элементам картинки.


[ АРХИВ ]~~~~~~~~~~~~~~~~~~~~~~

В архиве находится исходник и пример. Без ЕХЕ. ЕХЕ, если надо, могу отдельно сделать.

[ БУДУЩЕЕ ]~~~~~~~~~~~~~~~~~~~~~~

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

В итоге тебе дается нужный код.

Также может добавлю элементов.
И, конечно же, исправление мелких усатых багов.

[ ВНИМАНИЕ ]~~~~~~~~~~~~~~~~~~~~~~

Не использовать гуи со Strict и SuperStrict. Если их использовать - падение гуи неизбежно.

Так как один объект эту переменную как рисунок использует, а другой - как число. Я тем самым сокращал кол-во переменных.
В следущих версия (но они будут не скоро) исправлю.

Это ведь версия 0.5 только

[ ТУТОРИАЛ ]~~~~~~~~~~~~~~~~~~~~~~

И небольшой туториал по использованию моего гуи в своих проектах.

=-=-=

Для начала давай подключим гуи для своего проекта.
Include "GUI.bmx"
Теперь можно использовать все функции в вашем проекте.
Создадим окно.

DF_GUI.Create_Window (640/2-100,480/2-50,200 , 160, "Main Menu" , "Window1",0,0,0,3,4,3)

(x,y,width , height, text$ , name$, bexit , image, FocusOffDelete, DRL1=2 ,DRL2=1,DRL3=1 )

x, у - начальное положение окна.
width , height - ширина и высота окна.
text - что будет в загаловке окна.
name - имя окна. Используется для вызова некоторых функций.
bexit - будет ли кнопка выхода. [0,1-будет]
image - картинка для окна. Можно оставить равным 0, а можно загрузить картинку. Если картинка будет загружена, то она слева, и весь текст тоже смешается влево.
FocusOffDelete - если фокус проподает с окна - удалить? 1-да 0-нет
DRL1 - тип вывода линий. 1 - вверх. 2-вниз 3-ровно
DRL2,DRL3 - тип вывода прямоугольника. 1 - ровно. 2-градиент. 3-градиент. 4- сильно прозрачное. DRL2 - на само окно. DRL3 - на полосу с названием.
Самое крутое это 1,1,2 или 3,4,3.

Если надо выводить с картинкой:
DF_GUI.Create_WindowImage (x,y,image, name$, FocusOffDelete, DrapNDrop)
DrapNDrop - можно ли таскать окно. таскается всегда за верхнии 25 пикселей.

DF_GUI.Create_Text  (x,y,R,G,B, text$ , name$, wind$ )
Создаем текст.
Wind - к какому окну принадлежит объект. Определяется окно по имени.
R,G,B - цвет.

DF_GUI.Create_Bar (x,y,width,n1 , name$, wind$ )
Скроллер.
Width - ширина скроллера. Высота - 25 пкс.
n1 - сколько значений будет в скроллере.

DF_GUI.Function Create_BarImage  (x,y,image,image2,n1 , name$, wind$ )
image - картинка - полоса
image2 - ползунок.


DF_GUI.Create_Image  (x,y,image , name$, wind$ )
Простая картинка.

DF_GUI.Create_Input  (x,y,width,height,text$ , name$, wind$ )
Поле ввода.
text - что вначале будет в поле ввода.

DF_GUI .Create_InputImage (x,y,text,Image , name$, wind$ )
поле ввода, где за место прямоугольника - картинка.
Ширина и высота определяются шириной и высотой картинки.

DF_GUI.Create_List  (x,y,width,text$ , name$, wind$ )
Список. Слева и справа - кнопки.
Текст писать так:
"TEST1|TEST2|TEST3|"
В конце обяхательно |, иначе не будет последнего элемента.
Максимум 10 элементов. Потом, если потребуется, можно сделать легко и больше.

DF_GUI .Create_ListImage (x,y,image,text$ , name$, wind$ )
Список / лист. Картинкой.

DF_GUI.Create_Button  (x,y,width, height , image, text$, name$, wind$ )
Обычная кнопка.
image - тип вырисовки [1,2,3,4]

DF_GUI.Create_ButtonImage  (x,y, image,imagec,imagedown, name$, wind$ )
image - сама картинка кнопки.
imagec - если навели курсор.
imagedown - если нажали.

Вот пока и все эелементы. Функции для работы с ними:

Проверка на нажатие на кнопку.
GUI_ButtonDown (Window$, Button$)
Window - окно
Button - название вашей кнопки.

Изменить поле text:
ChangeText (Window$, obj$ , text$)
Window - окно
Obj - объект (Input,Button,Text,List,Bar)
Text - на что меняем. Для bar - число.

Получить значение поля text :
GetText (Window$, obj$)
Window - окно
Obj - объект (Input,Button,Text,List,Bar)

Есть ли фокус:
GetFocus (Window$, obj$ )
Window - окно
Obj - объект (Input,Button,List,Bar)

Закрыть окно:
ExitWindow (Window$)

Продолжаем наш проект.

Имеется :
Graphics 640,480
Include "GUI.bmx"

DF_GUI.Create_Window (640/2-100,480/2-50,200 , 160, "Main Menu" , "Window1",0,0,0,1,1,2)

While Not KeyDown (Key_Escape)
Cls
Flip
Wend
Добавим в цикл: GUI_Update()
Теперь у нас будет работать само окно.
Но так ведь не интерестно? добавим надпись:

DF_GUI.Create_Text (10,0,200,200,200, "Preved, Medved." , "Text1", "Window1" )
Это у нас создаем надпись на нашем окне. Отсчет x и y видется от начал границ окна.

DF_GUI.Create_Button (10,50,180, 20 ,3, "Exit", "Button1", "Window1" )

Создадим кнопку.

Так. Теперь есть некоторые элементы.

Добавим в цикл, после GUI_Update() :

ChangeText ("Window1", "Button1" , GetText ("Window1", "Text1"))
Это меняет у нас название кнопки на название текста.

Можно сделать два варианта завершения программы:

If GUI_ButtonDown ("Window1", "Button1") Then ExitWindow ("Window1")
Просто закрывает окно.

If GUI_ButtonDown ("Window1", "Button1") Then End
Завершает саму программу.

Я остановлюсь на втором.

Вот весь текст:

Graphics 640,480
Include "GUI.bmx"

DF_GUI.Create_Window (640/2-100,480/2-50,200 , 160, "Main Menu" , "Window1",0,0,0,1,1,2)
DF_GUI.Create_Text (10,0,200,200,200, "Preved, Medved." , "Text1", "Window1" )
DF_GUI.Create_Button (10,50,180, 20 ,3, "Exit",  "Button1", "Window1" )

While Not KeyDown (Key_Escape)
Cls
GUI_Update()
ChangeText ("Window1", "Button1" , GetText ("Window1", "Text1"))
If GUI_ButtonDown ("Window1", "Button1") Then End  
Flip
Wend
Кстати, выражаю благодарность МоКе и dimanche13 за помощь. =)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ant0N (26.07.2013)