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

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

22.01.2017, 12:01. Просмотров 766. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

3
rao
858 / 415 / 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

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

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

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


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

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

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