crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Не понятно со шрифтами...
FantasyOr
  опции профиля:
сообщение 5.10.2010, 12:36
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 75
Регистрация: 13.8.2010
Пользователь №: 1956

Спасибо сказали: 4 раз(а)




Репутация:   0  


Здравствуйте.
Подскажите пожалуйста. шрифты нужно как-то регистрировать в Qt? Такое ощущение, что есть только 2 шрифта. Рисую на сцене, года задаю имя шрифта как "Tahoma", "Arial"...(нормальные имена шрифтов), то всегда один шрифт, а если задаю некорректное имя "Tu123turus"... то другой шрифт применяется...
В какую сторону посоветуете идти... =)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 5.10.2010, 12:38
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


а как рисуешь и задаешь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 5.10.2010, 13:12
Сообщение #3


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


FantasyOr,
а
Цитата
QStringList QFontDatabase::applicationFontFamilies ( int id ) [static]
Returns a list of font families for the given application font identified by id.

This function was introduced in Qt 4.2.

See also addApplicationFont() and addApplicationFontFromData().

что даёт?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FantasyOr
  опции профиля:
сообщение 5.10.2010, 13:14
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 75
Регистрация: 13.8.2010
Пользователь №: 1956

Спасибо сказали: 4 раз(а)




Репутация:   0  


"а как рисуешь и задаешь?"


font.setFamily("Times"); // или другой
QPainterPath textPath;
textPath.addText(poit, font, text);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FantasyOr
  опции профиля:
сообщение 6.10.2010, 12:21
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 75
Регистрация: 13.8.2010
Пользователь №: 1956

Спасибо сказали: 4 раз(а)




Репутация:   0  


да, QFontDatabase выдает кучу шрифтов.
но вот

сравнение шрифтов в мили-проекте(проба шрифтов) и в ворде. они совсем не похожи, а нужно сходство ибо получается, что не получается...
почему шрифты на сцене не похожи на оные в ворде или другом редакторе?
Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 6.10.2010, 12:31
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


меня напрягает рисование через QPainterPath :) почему drawText() не подходит? задав пеинтеру нужный шрифт.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FantasyOr
  опции профиля:
сообщение 6.10.2010, 13:54
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 75
Регистрация: 13.8.2010
Пользователь №: 1956

Спасибо сказали: 4 раз(а)




Репутация:   0  


я может и не прав, из соображений быстродействия, я добавляю в path текст, много строк, в нужных мне местах, а потом этот path добавляю на сцену и он быстренько рисуется? вместо многих циклов отрисовок.

да действительно если использовать drawText(), то будет красиво.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FantasyOr
  опции профиля:
сообщение 8.10.2010, 15:06
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 75
Регистрация: 13.8.2010
Пользователь №: 1956

Спасибо сказали: 4 раз(а)




Репутация:   0  


C drawText() и drawRect() не только красивее, но и быстрее, причем существенно
пример:
    QPainterPath path;
    QRectF rect;
    rect.setHeight(20);
    rect.setWidth(200);
    for (int i=0; i<1000; ++i)
    {
        rect.moveTo(0, i*50);
        path.addRect(rect);
    //    painter.drawRect(rect);
    }

    painter.drawPath(path);

рисуется примерно 17 секунд.

    QPainterPath path;
    QRectF rect;
    rect.setHeight(20);
    rect.setWidth(200);
    for (int i=0; i<1000; ++i)
    {
        rect.moveTo(0, i*50);
    //    path.addRect(rect);
        painter.drawRect(rect);
    }

    //painter.drawPath(path);

рисуется 2 секунды.
через path работает ~ в 8 раз медленнее. в моем примере, он конечно может быть и не совсем корректный.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 6:41