Наше комьюнити:   OpenGL Shader Lab  •  Half-Life FX  •  Форум  
HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > нуб вопросы от <censored> и других нубов
чтобы не создавать сто тем создам одну
2 голосов
Страницы (111): « Первая ... « 107 108 109 110 [111]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 48
Возраст: 19

Рейтинг



Хочу сделать vgui-класс, выводящий текст на родительской Panel (это только лишь в данный момент хочется чтобы только лишь выводил).

Текст располагается относительно своей позиции, делая отступ в зависимости от textLocation.

Как сейчас я понимаю принцип работы панелей:
1) Создали мы экземпляр класса, унаследованного от Panel;
2) Задали родителя, который вызывает paint'ы дочерних элементов;
3) Вот тут уже под вопросом. Внутри paint'а самого экземпяра система координат либо относительная (К примеру, drawSetTextPos(0, 0) ==getPos(varX, varY), то есть положение экземпляра на родителе), либо абсолютная (drawSetTextPos(varX, varY)==getPos(varX, varY), может мутно, но надеюсь, вы меня поняли :-) )
В итоге, отрисовка только фона, притом, что в конструкторе задал false. текста нету.

C++ Source Code:
using namespace vgui;

class CLinkLabel : public Panel {
public:
    CLinkLabel() {
        setPaintBackgroundEnabled(false);
        m_textLocation=Location::l_left;
    }
CLinkLabel(const char* text) : m_linkValue(text) { CLinkLabel(); }
CLinkLabel(const String& str) : m_linkValue(str) { CLinkLabel(); }

enum Location { l_left=0, l_right=1, l_center=2 };

void setText(const char* text) {
    m_linkValue=text;
}
void setTextLocationOnPos(CLinkLabel::Location argLocation) {
    m_textLocation=argLocation;
}
private:
void paint() {
    const char* text=m_linkValue.getChars();
    int textLength=m_linkValue.getCount();
    
    CSchemeManager *pSchemes=gViewPort->GetSchemeManager();
    SchemeHandle_t hTitleFontScheme=pSchemes->getSchemeHandle("Briefing Text");
    Font* pFont=pSchemes->getFont(hTitleFontScheme);
    
    drawSetTextFont(pFont);
    drawSetTextColor(64, 128, 228, 0);
    
    int x, y, wide, tall;
    getPos(x, y);
    pFont->getTextSize(text, wide, tall);
    
    switch(m_textLocation) {
        case l_left:
            break;
        case l_right:
            x-=wide;
        break;
        case l_center:
            x-=wide/2;
    }
    
    drawSetTextPos(x, y);
    
    drawPrintText(text, textLength);
}
private:
String m_linkValue;
Location m_textLocation;

//Font* m_pFont;
};



C++ Source Code:
// Где-то в конструкторе родителя
// CLinkLabel* m_pLinkLabel; // объявление в заголовочном файле

m_pLinkLabel=new CLinkLabel("SampleText1 it's ROAR");
m_pLinkLabel->setParent(this);
m_pLinkLabel->setPos(325, 250);
m_pLinkLabel->setSize(300, 60);



Размеры элементы задал на всякий крайний, вдруг он внутри самого себя отрисовку делает, то есть drawSetTextPos(0, 0)==m_pLinkLabel->setPos(325, 250).

Отредактировано Smykov 21-04-2018 в 15:36

Сообщить модератору | | IP: Записан
Сообщение: 172332

Старое сообщение 21-04-2018 15:31
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 03:51. Новая тема    Ответить
Страницы (111): « Первая ... « 107 108 109 110 [111]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > нуб вопросы от <censored> и других нубов
чтобы не создавать сто тем создам одну
2 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Chain Studios © 2005-2018

Рейтинг@Mail.ru