Russian Qt Forum
Сентябрь 22, 2024, 11:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с drawText  (Прочитано 4468 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Март 12, 2014, 16:31 »

Добрый день

См аттач - результаты в 2 окнах не совпадают хотя рисуются одной и той же моей ф-цией которая вызывает QPainter::drawText(x, y, QString). Ну думаю, может насвистел где-то в вычислении "y" и сразу же после drawText нарисовал для отладки красную линию с тем же "y". Линии совпали, хмм.... как же так? Что может влиять на вывод текста?

Спасибо
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #1 : Март 12, 2014, 16:47 »

О, любимая "drawText". Что-б ее.
Я встречался с тем, что на разных версиях Qt по разному рисует.
У тебя похоже во первых офсет по y смещен, а во вторых белую линию рисуешь внизу красной.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Bepec
Гость
« Ответ #2 : Март 12, 2014, 16:49 »

Шрифт обычно, размер шрифта и прочее. Всё это рисуется по разному, маргины скачут как бешеные. Головоболь в общем.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Март 13, 2014, 11:01 »

У тебя похоже во первых офсет по y смещен, а во вторых белую линию рисуешь внизу красной.
Если смещен, то чего красная линия "где доктор прописал"? Белой линии я не рисую, там просто текст кончился.

Разумеется попробовал setFont, QPainter::restore перед рисованием - эффект тот же. Где же порылась собака?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Март 13, 2014, 12:09 »

А фонты точно одинаковые? И QFont::StyleStrategy?
Видно же что рендерятся по-разному.
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Март 13, 2014, 12:45 »

Нашел разницу: первый рендерится на экран (грубо говоря), второй сначала в QImage. В аттаче тестовый пример + имедж. Хз что делать (убрать буфер нереально)  Плачущий Плачущий
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #6 : Март 13, 2014, 12:58 »

хм. У меня такая же задача стоит в рамках этого проекта.
Может найдешь разгадку. Я не добрался как выравнивать нормально имадж.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Март 13, 2014, 13:05 »

Походу для рендеринга используются разные QPaintEngine.
В QImage raster. Какой тогда для экрана?
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Март 13, 2014, 13:37 »

Походу для рендеринга используются разные QPaintEngine.
В QImage raster. Какой тогда для экрана?
OSX Quartz (QPaintEngine::CoreGraphics), он векторный.

Итого залатал так:
Код
C++ (Qt)
int dx = 0, dy = 0;
#ifdef Q_WS_MAC
if (painter.paintEngine()->type() != QPaintEngine::CoreGraphics) {
dx = -1;
#ifndef QT_MAC_USE_COCOA
dy = -2;
#endif
}
#endif
 
« Последнее редактирование: Март 13, 2014, 13:44 от Igors » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.153 секунд. Запросов: 23.