void D3DMenu::DrawBorder(float x, float y, float w, float h, float with, D3DCOLOR Color)
{
DrawLine(x, y+1, x + w, y+1, with, Color);//Верхняя линия
DrawLine(x, y + h, x, y, with, Color);//Левая линия
DrawLine(x, y + h, x + w, y + h, with, Color);//Нижняя
DrawLine(x + w, y, x + w, y + h, with, Color);//Правая
}
DrawBorder(X, Y, W, H, 1, BLUE);// Цифра 1 это толщина рамки. Как видим координаты указываем нашего бокса
Добавим еще один бокс поверх нашего для красоты:
DrawBox(X, Y, W, 20, BLUE);// Цвет синий так же как у рамки
Ну и добавим заголовок (текст):
DrawText(X + (W/2),Y+5,WHITE,"Menu D3D9 FanHack.ru",DT_CENTER);
DT_CENTER - Это положение текста по центру. Есть DT_LEFT, DT_RIGHT лева права. Координаты берем из бокса Y - прибавляем 5 пикселей чтоб текст был ровней по новому синему боксу. А Х прибавляем W(Ширина) и делим на 2 чтобы получить центр бокса.
В данный момент в нашем исходнике слишком большой текст давайте поменяем размер текста:
Функция выше где создается текст.
void D3DMenu::CreateFont(LPDIRECT3DDEVICE9 pDevice)
{
if (d3ddev == NULL)d3ddev = pDevice;
if (pFont == NULL)D3DXCreateFontA(d3ddev, 26, 0, FW_LIGHT, 0, FALSE, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, PROOF_QUALITY, DEFAULT_PITCH | FF_DONTCARE, TEXT("Tohoma"), &pFont);
if (pLine == NULL)D3DXCreateLine(d3ddev, &pLine);
}
Смотрим на функцию D3DXCreateFontA. Где указано 26 - это размер текста, я посмотрел и по мне 15 размер подходит. Меняем 26 на 15 текст при отрисовке будет меньше чем сейчас. Так же где написано "Tohoma" - это имя шрифта, можно писать свой например "Arial"
comment_158Продолжаем урок: http://fanhack.ru/index.php/topic/75-sozdanie-meniuosnova-%E2%84%961/
Приукрасим наш фон для меню.
1. Добавим функцию для рисования рамки
2. Добавим рамку
3. Добавим текст
4. Отредактируем размер текста
Добавим функцию:
void D3DMenu::DrawBorder(float x, float y, float w, float h, float with, D3DCOLOR Color) { DrawLine(x, y+1, x + w, y+1, with, Color);//Верхняя линия DrawLine(x, y + h, x, y, with, Color);//Левая линия DrawLine(x, y + h, x + w, y + h, with, Color);//Нижняя DrawLine(x + w, y, x + w, y + h, with, Color);//Правая }И пропишем прототип в класс:
Нарисуем рамку вокруг нашего бокса:
Добавим еще один бокс поверх нашего для красоты:
Ну и добавим заголовок (текст):
В данный момент в нашем исходнике слишком большой текст давайте поменяем размер текста:
Функция выше где создается текст. void D3DMenu::CreateFont(LPDIRECT3DDEVICE9 pDevice) { if (d3ddev == NULL)d3ddev = pDevice; if (pFont == NULL)D3DXCreateFontA(d3ddev, 26, 0, FW_LIGHT, 0, FALSE, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, PROOF_QUALITY, DEFAULT_PITCH | FF_DONTCARE, TEXT("Tohoma"), &pFont); if (pLine == NULL)D3DXCreateLine(d3ddev, &pLine); }Смотрим на функцию D3DXCreateFontA. Где указано 26 - это размер текста, я посмотрел и по мне 15 размер подходит. Меняем 26 на 15 текст при отрисовке будет меньше чем сейчас. Так же где написано "Tohoma" - это имя шрифта, можно писать свой например "Arial"
Компилируем и смотрим:
В DrawMenu:
Тут хватит. Потом наверно начнем с кнопок