LINUX.ORG.RU

QT рисование


0

0

есть QPixmap ttt(":/img/pic.png");
На pic.png пару кружков. Картинка c альфа каналом.
если сделать ttt.fill(Qt::red); то вся пнгшка станет красной.

как залить тоько круги?


Подозреваю что нужно создать QPainter painter(ttf); и вызывать метод void QPainter::fillPath ( const QPainterPath & path, const QBrush & brush ) для каждого круга, в QPainterPath должны задаваться координаты и форма окружности, а в QBrush цвет.

dyb4hzvo
()
Ответ на: комментарий от dyb4hzvo

Хотя вроде можно добавить в QPainterPath сразу несколько окружностей, попробуй.

dyb4hzvo
()
Ответ на: комментарий от dyb4hzvo

Два круга это частный случай ... на картинке может быть что угодно. Интересует как залить только саму картинку без фона.

stim
() автор топика

void QPixmap::setMask ( const QBitmap & mask ) - в эту строну копать.

driver8
()
Ответ на: комментарий от stim

Из идей только такой велосипед:

QPixmap ttt("ttt.png")

QBitmap bm(ttt);

QRegion reg(bm);

QPainterPath path(); path.addRegion(reg);

QBrush brush(Qt::Red)

QPainter painter(ttt);

QPainter.fillPath(path, brush);

dyb4hzvo
()
Ответ на: комментарий от dyb4hzvo

to dyb4hzvo
QRegion reg(ttt.mask());
QPainterPath path; path.addRegion(reg);
QBrush brush(Qt::black);
QPainter painter(&ttt);
painter.fillPath(path, brush);

Спасибо работает.

stim
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.