void GradientPreview::paintEvent(QPaintEvent *e) { QList<VColorStop*> cstops = fill_gradient.colorStops(); StopM.clear(); for (uint a = 0; a < fill_gradient.Stops(); ++a) { int center = qRound(cstops.at(a)->rampPoint * (width()-20))+10; StopM.append(center); } QImage pixm(width()-20, 37, QImage::Format_ARGB32_Premultiplied); QPainter pb; QBrush b(QColor(205,205,205), loadIcon("testfill.png")); pb.begin(&pixm); pb.fillRect(0, 0, pixm.width(), pixm.height(), b); pb.end(); ScPainter *p = new ScPainter(&pixm, width()-20, 37); // p->clear(Qt::white); p->setPen(Qt::black); p->setLineWidth(1); p->setFillMode(2); p->fill_gradient = fill_gradient; p->setGradient(VGradient::linear, FPoint(0,20), FPoint(width()-20,20), FPoint(0, 0), 1.0, 0.0); p->drawRect(0, 0, width()-20, 37); p->end(); delete p; QPainter pw; pw.begin(this); pw.drawImage(10, 5, pixm); if (isEditable) { for (uint a = 0; a < fill_gradient.Stops(); ++a) { int center = qRound(cstops.at(a)->rampPoint * (width()-20))+10; pw.setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); if (StopM[qMax(ActStop,0)] == center) pw.setBrush(Qt::red); else pw.setBrush(Qt::blue); QPolygon cr; cr.setPoints(3, qRound(center), 43, qRound(center-4), 56, qRound(center+4), 56); pw.drawPolygon(cr); } } pw.end(); QFrame::paintEvent(e); }
void gradientManagerDialog::updateGradientList() { gradientsList->clear(); for (QMap<QString, VGradient>::Iterator it = dialogGradients.begin(); it != dialogGradients.end(); ++it) { QImage pixm(48, 12, QImage::Format_ARGB32); QPainter pb; QBrush b(QColor(205,205,205), loadIcon("testfill.png")); pb.begin(&pixm); pb.fillRect(0, 0, 48, 12, b); pb.end(); ScPainter *p = new ScPainter(&pixm, 48, 12); p->setPen(Qt::black); p->setLineWidth(1); p->setFillMode(2); p->fill_gradient = it.value(); p->setGradient(VGradient::linear, FPoint(0,6), FPoint(48, 6), FPoint(0, 0), 1.0, 0.0); p->drawRect(0, 0, 48, 12); p->end(); delete p; QPixmap pm; pm = QPixmap::fromImage(pixm); QListWidgetItem *item = new QListWidgetItem(pm, it.key(), gradientsList); item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); } if (dialogGradients.count() == 0) { buttonRemoveAll->setEnabled(false); buttonSave->setEnabled(false); } else { buttonRemoveAll->setEnabled(true); buttonSave->setEnabled(true); } }