1. Добавляем в наш класс новую функцию для создания чек боксов:
Сначала добавим прототип:
bool AddItemCheck(char *names, float x, float y, int num, int &arg);// Чек бокс для активации функций
Потом опишем саму функцию:
bool D3DMenu::AddItemCheck(char *names, float x, float y, int num, int &arg)
{
if(arg == 0)DrawBox(x + 5, y + (15 * num) + 2, 15, 15, BLACK);// Бокс черный если функция выключена
else
{
DrawBox(x + 5, y + (15*num) + 2, 15, 15, GREEN);// Бокс зеленый если функция включена
}
if (IsInBox(x + 5,y + (15 * num) + 2, 15, 15))// Условие наведена ли мышка на бокс
{
DrawBox(x + 5, y + (15 * num) + 2, 15 , 15 , WHITETr);// Рисует еще полупрозрачный белый бокс для внешнего определения что мышка на нем
if (IsKeyPressed(VK_LBUTTON, 0))// ожидание нажатие клавиши мыши
{
if (arg == 0)arg = 1;// если аргумент равен 0(функция фыключена) то присваеваем ему один то есть включаем
else
{
arg = 0;// и наобород если вкл. то выключаем присваевая 0
}
}
}
DrawText(x + 5 + 20, y + (15 * num) + 2, WHITE, names, DT_LEFT);// отрисовка названия функции
DrawBorder(x + 5, y + (15 * num) + 2, 15, 15 ,1, WHITE);// Рисеут рамку для внешности
return arg;
}
2. Добавим пару переменных которые будут работать как проверка какая функция была включена:
int but1q = 0;
int but2q = 0;
int but3q = 0;
3. Ну и использование нашего чек бокса:
if (DrawButtons("Кнопка 1", X + 5, Y + 25, 100, 30, 1, but1, RED))
{
AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 1, but1q);
AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 2, but2q);
AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 3, but3q);
}
Подписей мало. Но по идее вы уже должны понять как все работает тут.
Это только примеры как работать с рисованием на дирексе.
Но вы должны понимать что это не все что можно сделать, еще очень много методов в D3D9 которые можно использовать.
Только тут уже вы должны сами думать как и каким образом что либо отрисовать, ведь основные примеры у вас теперь есть.)
Рисуется все от этих функций. Можно сказать это базовые методы для рисования меню.
Все эти кнопки, чек боксы, ползунки и прочее берется из головы.)
Небольшие подсказки (как смог так и объяснил):
На этом можно закончить тему!) Все что непонятно или какие вопросы задавайте в разделе "Помощь по коду"
comment_170Всем привет
Продолжаем работу над меню.
Предыдущий урок: http://fanhack.ru/index.php/topic/77-dobavliaem-knopki-v-meniu-%E2%84%963/
1. Добавляем в наш класс новую функцию для создания чек боксов:
Сначала добавим прототип:
Потом опишем саму функцию:
bool D3DMenu::AddItemCheck(char *names, float x, float y, int num, int &arg) { if(arg == 0)DrawBox(x + 5, y + (15 * num) + 2, 15, 15, BLACK);// Бокс черный если функция выключена else { DrawBox(x + 5, y + (15*num) + 2, 15, 15, GREEN);// Бокс зеленый если функция включена } if (IsInBox(x + 5,y + (15 * num) + 2, 15, 15))// Условие наведена ли мышка на бокс { DrawBox(x + 5, y + (15 * num) + 2, 15 , 15 , WHITETr);// Рисует еще полупрозрачный белый бокс для внешнего определения что мышка на нем if (IsKeyPressed(VK_LBUTTON, 0))// ожидание нажатие клавиши мыши { if (arg == 0)arg = 1;// если аргумент равен 0(функция фыключена) то присваеваем ему один то есть включаем else { arg = 0;// и наобород если вкл. то выключаем присваевая 0 } } } DrawText(x + 5 + 20, y + (15 * num) + 2, WHITE, names, DT_LEFT);// отрисовка названия функции DrawBorder(x + 5, y + (15 * num) + 2, 15, 15 ,1, WHITE);// Рисеут рамку для внешности return arg; }2. Добавим пару переменных которые будут работать как проверка какая функция была включена:
3. Ну и использование нашего чек бокса:
if (DrawButtons("Кнопка 1", X + 5, Y + 25, 100, 30, 1, but1, RED)) { AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 1, but1q); AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 2, but2q); AddItemCheck("Кнопка 1", X + 5 + 100, Y + 25, 3, but3q); }Подписей мало. Но по идее вы уже должны понять как все работает тут.
Это только примеры как работать с рисованием на дирексе.
Но вы должны понимать что это не все что можно сделать, еще очень много методов в D3D9 которые можно использовать.
Только тут уже вы должны сами думать как и каким образом что либо отрисовать, ведь основные примеры у вас теперь есть.)
Рисуется все от этих функций. Можно сказать это базовые методы для рисования меню.
Все эти кнопки, чек боксы, ползунки и прочее берется из головы.)
Небольшие подсказки (как смог так и объяснил):
На этом можно закончить тему!) Все что непонятно или какие вопросы задавайте в разделе "Помощь по коду"
Полный исходник урока!