Название: QPainter, drawText и текстуры Отправлено: алексей от Май 25, 2012, 10:17 Здравствуйте ! Необходимо выводить текст с использованием текстуры (png файлы).
Есть paintEvent с таким содержанием: Код: void test::paintEvent(QPaintEvent *) Если используется test.png (одноцветная заливка) - отображается нормально, если test1.png (градиент) - по нижнему краю букв идет полоска. В чем может быть дело ?? Заранее спасибо за ответы, текстуры во вложении... Название: Re: QPainter, drawText и текстуры Отправлено: GreatSnake от Май 25, 2012, 10:26 Код: int fontHeight = height()*0.7; И чем не устроил Код ? Название: Re: QPainter, drawText и текстуры Отправлено: алексей от Май 25, 2012, 11:01 int fontHeight = height()*0.7; - в данном случае особо ничего - просто кусочек из проекта в котором нужна зависимость размера шрифта от размера окошка и текстурированный текст. Градиентная заливка - устраивает всем, приведенный png файлик с градиентом только пример, на самом деле будут использоваться не только градиенты....может надо как-то по другому масштабировать png ???
Название: Re: QPainter, drawText и текстуры Отправлено: ammaximus от Май 25, 2012, 15:21 Попробуйте такой вариант
Код: pen.setBrush(QBrush(QPixmap("c:\\test1.png").scaled(rect().size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation))); Делайте градиенты динамически, как предложил GreatSnake. Другие изображения, без таких требований к плавности перехода scaled съедает нормально. Еще могу посоветовать делать текстуры больше в сторону именно градиентости. Больше пикселей - больше информации для алгоритма растягивания, не забывайте. Попробуйте сделать такую же текстурку, но шириной в 1 пиксель, а высотой в 300. Весит 300 байт, а даже моих 1900х1200 не хватило чтобы расквадратить Название: Re: QPainter, drawText и текстуры Отправлено: GreatSnake от Май 25, 2012, 15:27 Мало того, загрузка картинки, создание тяжелого QPixmap-а и последующий его ресайс в отрисовке ...
За такие дела надо сильно по рукам давать ) Название: Re: QPainter, drawText и текстуры Отправлено: алексей от Май 30, 2012, 07:55 Попробуйте такой вариант Код: pen.setBrush(QBrush(QPixmap("c:\\test1.png").scaled(rect().size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation))); Делайте градиенты динамически, как предложил GreatSnake. Другие изображения, без таких требований к плавности перехода scaled съедает нормально. Еще могу посоветовать делать текстуры больше в сторону именно градиентости. Больше пикселей - больше информации для алгоритма растягивания, не забывайте. Попробуйте сделать такую же текстурку, но шириной в 1 пиксель, а высотой в 300. Весит 300 байт, а даже моих 1900х1200 не хватило чтобы расквадратить Спасибо !!! попробую ! |