Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > GUI Direct3D |
Автор: KoZliK 4.2.2010, 01:32 |
Подскажите пожалуйста, как реализовать пользовательский интерфейс под Direct3D. Обработка событий, отрисовка котролов(спрайтами или ещё как-то). Смотрел пример CustomUI из DirectX SDK но не смог разобраться там пока. Пишу под Windows Mobile на C#, но в соответствующем разделе форума подраздела типа "managed DirectX" нету, так что задаю вопрос тут. Понимаю, что C++ и C# языки разные, но мне нужна лишь идея. Больше всего интересует вторая часть вопроса. Пока что... спасибо) |
Автор: Static 4.2.2010, 10:44 |
я как-то делал супер простенький GUI (правда на OpenGL) - квадратики с текстурой были контролами. Обработка событий мало зависит от используемого ГАПИ - это чисто вопрос проектирования. Я делал небольшую иерархию классов (например: Контрол-Окно-Кнопка), содержащих указателями на функции. Например, контрол имел метод OnMouseMove, который вызывал функцию по указателю. Этот указатель сообщался контролу функцией типа SetEvent. Далее происходила проверка - движется ли мышь над контролом. Если да - вызывается OnMouseMove. Там проверяется - корректен ли "привязанный" указатель функции. Если корректен - вызывается нужная функция. Как-то так. |
Автор: KoZliK 4.2.2010, 13:48 |
Спасибо вы только что подкинули мне идею) Я хотел использовать кнопки с закругленными углами. Но при таком подходе при изменении размеров контрола, текстура бы растягивалась черт знает куда. ну а если поделить допустим, кнопку на 9 частей, то все получится: недеформ. угол | деформ.горизонтальный бордюр | недеформ. угол ----------------------------------------------------------------------------------------------------------- деформ. верт. бордюр| | деформ. верт. бордюр ------------------------------------------------------------------------------------------------------------ недеформ. угол | деформ.горизонтальный бордюр | недеформ. угол тогда контрол можно будет натянуть на примитив и растягивать как угодно. |
Автор: Static 4.2.2010, 17:11 |
KoZliK, насчет 9-ти частей - обычно так и делают. Я в своем примере заморачивался по минимуму, поэтому у меня обычные квады были с альфа-текстурой. Кстати, много по этому поводу есть на gamedev.ru - но там контингент злой ![]() |
Автор: KoZliK 4.2.2010, 17:27 |
Static, спасибо) |