Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
kesean
273 / 272 / 108
Регистрация: 04.09.2010
Сообщений: 638
Завершенные тесты: 1
#1

Не меняется текущий шрифт - OpenGL

22.01.2017, 12:01. Просмотров 152. Ответов 3
Метки нет (Все метки)

Функция вывода текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        public void DrawString(string str, Font font, int pos_x, int pos_y)
        {
            IntPtr hdc = Wgl.wglGetCurrentDC();
            // тут, как я понимаю, шрифт, переданный в параметре
            // назначается текущим
            API.SelectObject(hdc, font.ToHfont()); 
            Wgl.wglUseFontBitmapsW(hdc, 0, 1104, 0);
 
            Gl.glPushMatrix();
            Gl.glTranslatef(pos_x, -SHEET_HEIGHT + pos_y, 0);
            Gl.glListBase(0);
            Gl.glRasterPos2i(0, 0);
            Gl.glCallLists(str.Length, Gl.GL_UNSIGNED_SHORT, str);
            Gl.glPopMatrix();
        }
Вызываю:
C#
1
2
3
4
5
6
            Font font1 = new System.Drawing.Font("Arial", 20, FontStyle.Bold);
            // Жирный шрифт, размер 20
            DrawString("123 abc абв", font1, 20, 20);
            Font font2 = new System.Drawing.Font("Arial", 10, FontStyle.Italic);
            // Курсив, размер 10
            DrawString("123 abc абв", font2, 20, 40);
Шрифт не меняется.
Не меняется текущий шрифт
Как в opengl использовать несколько шрифтов?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2017, 12:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не меняется текущий шрифт (OpenGL):

Шрифт не меняется на русских буквах, на английских - меняется
Здравствуйте! Проблема с подключением шрифта. Все сделал верно, но при...

Как сохранить текущий шрифт?
Изменить -- всё понятно и легко находится: создать LOGFONT, забить значениями,...

Не меняется шрифт
Я сохраняю .ttf файл шрифта в ресурсах, динамически загружаю его в...

Не меняется шрифт
Решил написать простенькое лого компании, но почему то, не меняется шрифт,...

Не меняется шрифт
Всем привет, друзья! Такой вопрос ниже уже затрагивался, но у меня несколько...

Почему не меняется шрифт?
Почему не меняется шрифт? Public Class Form4 'Загрузка формы ...

3
rao
857 / 412 / 158
Регистрация: 02.04.2014
Сообщений: 1,201
22.01.2017, 17:16 #2
Лучший ответ Сообщение было отмечено kesean как решение

Решение

Для второго шрифта нужно генерировать новый дисплейный список ( glGenLists ) и делать wglUseFontBitmaps не в 0, а уже по другому смещению (т.е. идентификатору). Соответственно и для вывода разных шрифтов нужно пользоваться glCallLists с разными базами списков. Т.е. устанавливать нужную базу при помощи glListBase.
1
kesean
273 / 272 / 108
Регистрация: 04.09.2010
Сообщений: 638
Завершенные тесты: 1
22.01.2017, 20:08  [ТС] #3
rao, Спасибо, завтра попробую.
0
kesean
273 / 272 / 108
Регистрация: 04.09.2010
Сообщений: 638
Завершенные тесты: 1
23.01.2017, 10:13  [ТС] #4
rao, Еще раз спасибо, все получилось
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        public void GenerateList(Font font, int listBase)
        {
            IntPtr hdc = Wgl.wglGetCurrentDC();
            API.SelectObject(hdc, font.ToHfont());
            Wgl.wglUseFontBitmapsW(hdc, 0, 1104, listBase);
        }
        public void DrawString(string str, int pos_x, int pos_y, int listBase)
        {
            Gl.glPushMatrix();
            Gl.glTranslatef(pos_x, -SHEET_HEIGHT + pos_y, 0);
            Gl.glListBase(listBase);
            Gl.glRasterPos2i(0, 0);
            Gl.glCallLists(str.Length, Gl.GL_UNSIGNED_SHORT, str);
            Gl.glPopMatrix();
        }
 
            int listBase1 = Gl.glGenLists(1);
            GenerateList(font1, listBase1);
            int listBase2 = Gl.glGenLists(1);
            GenerateList(font2, listBase2);
            DrawString("123 abc абв", 40, 20, listBase1);
            DrawString("123 abc абв", 40, 40, listBase2);
Не меняется текущий шрифт
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2017, 10:13
Привет! Вот еще темы с решениями:

Не меняется шрифт RichTextBox
Итак, есть RichTextBox по имени rtbMain. Есть FontDialog по прозвищу dlgFont....

Самопроизвольно меняется шрифт
В программе используется для edit, label, button шрифт Book Antiqua. На другом...

Не меняется шрифт в презентации
Здравствуйте! Подскажите, пожалуйста, вставил в презентацию стандартный фон, и...

ListView: шрифт меняется не у всех элементов
На форму положите ListView и чекбокс; их названий не меняйте. В код формы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru