コード例 #1
0
void ColorWheel::drawWheel(const QSize &newSize)
{

    int r = qMin(newSize.width(), newSize.height());

    QStyleOption option;
    option.initFrom(this);
    //    QStyle::State state = option.state;

    QBrush background = option.palette.window();

    QPainter painter(&wheel);
    painter.setRenderHint(QPainter::Antialiasing);
    wheel.fill(background.color());

    QConicalGradient conicalGradient(0, 0, 0);
    conicalGradient.setColorAt(0.0, Qt::red);
    conicalGradient.setColorAt(60.0/360.0, Qt::yellow);
    conicalGradient.setColorAt(120.0/360.0, Qt::green);
    conicalGradient.setColorAt(180.0/360.0, Qt::cyan);
    conicalGradient.setColorAt(240.0/360.0, Qt::blue);
    conicalGradient.setColorAt(300.0/360.0, Qt::magenta);
    conicalGradient.setColorAt(1.0, Qt::red);

    /* outer circle */
    painter.translate(r / 2, r / 2);

    QBrush brush(conicalGradient);
    painter.setPen(Qt::NoPen);
    painter.setBrush(brush);
    painter.drawEllipse(QPoint(0,0),r/2-margin,r/2-margin);
    /* inner circle */
    painter.setBrush(background);
    painter.drawEllipse(QPoint(0,0),r/2-margin-wheelWidth,r/2-margin-wheelWidth);

    //    QPainter painter2(&wheel);
    //    painter2.drawImage(0,0,source);

    //caculate wheel region
    wheelRegion = QRegion(r/2, r/2, r-2*margin, r-2*margin, QRegion::Ellipse);
    wheelRegion.translate(-(r-2*margin)/2, -(r-2*margin)/2);

    int tmp = 2*(margin+wheelWidth);
    QRegion subRe( r/2, r/2, r-tmp, r-tmp, QRegion::Ellipse );
    subRe.translate(-(r-tmp)/2, -(r-tmp)/2);
    wheelRegion -= subRe;
}
コード例 #2
0
ファイル: nqcolorwheel.cpp プロジェクト: Negusbuk/MatDB
void NQColorWheel::initializeWheel(const QSize& size)
{
    int r = qMin(size.width(), size.height());

    QStyleOption option;
    option.initFrom(this);

    QBrush background = option.palette.window();

    imageWheel_ = QImage(size, QImage::Format_ARGB32_Premultiplied);
    imageWheel_.fill(background.color());
    QPainter painter(&imageWheel_);
    painter.setRenderHint(QPainter::Antialiasing);

    QConicalGradient conicalGradient(0, 0, 0);
    conicalGradient.setColorAt(0.0, Qt::red);
    conicalGradient.setColorAt(60.0/360.0, Qt::yellow);
    conicalGradient.setColorAt(120.0/360.0, Qt::green);
    conicalGradient.setColorAt(180.0/360.0, Qt::cyan);
    conicalGradient.setColorAt(240.0/360.0, Qt::blue);
    conicalGradient.setColorAt(300.0/360.0, Qt::magenta);
    conicalGradient.setColorAt(1.0, Qt::red);

    painter.translate(r/2, r/2);

    QBrush brush(conicalGradient);
    painter.setPen(Qt::NoPen);
    painter.setBrush(brush);
    painter.drawEllipse(QPoint(0,0), r/2-margin_,r/2-margin_);
    /* inner circle */
    painter.setBrush(background);
    painter.drawEllipse(QPoint(0,0), r/2-margin_-wheelWidth_, r/2-margin_-wheelWidth_);

    //caculate wheel region
    regionWheel_ = QRegion(r/2, r/2, r-2*margin_, r-2*margin_, QRegion::Ellipse);
    regionWheel_.translate(-(r-2*margin_)/2, -(r-2*margin_)/2);

    int tmp = 2*(margin_+wheelWidth_);
    QRegion subRe(r/2, r/2, r-tmp, r-tmp, QRegion::Ellipse);
    subRe.translate(-(r-tmp)/2, -(r-tmp)/2);
    regionWheel_ -= subRe;
}
コード例 #3
0
void ColorWheel::drawWheel(const QSize &newSize)
{

    int r = qMin(newSize.width(), newSize.height());

    QStyleOption option;
    option.initFrom(this);

    QBrush background = option.palette.window();

    wheelImage = QImage(newSize, QImage::Format_ARGB32_Premultiplied);
    wheelImage.fill(background.color());
    QPainter painter(&wheelImage);
    painter.setRenderHint(QPainter::Antialiasing);

    QConicalGradient conicalGradient(0, 0, 5);
    conicalGradient.setColorAt(0.0, Qt::red);
    conicalGradient.setColorAt(60.0/360.0, Qt::yellow);
    conicalGradient.setColorAt(120.0/360.0, Qt::green);
    conicalGradient.setColorAt(180.0/360.0, Qt::cyan);
    conicalGradient.setColorAt(230.0/360.0, Qt::blue);
    conicalGradient.setColorAt(300.0/360.0, Qt::magenta);
    conicalGradient.setColorAt(1.0, Qt::red);

    painter.translate(r / 2, r / 2);

    QBrush brush(conicalGradient);
    painter.setPen(Qt::NoPen);
    painter.setBrush(brush);
    painter.drawEllipse(QPoint(0,0),r/2-margin,r/2-margin);
    painter.setBrush(background);
    painter.drawEllipse(QPoint(0,0),r/2-margin-wWidth,r/2-margin-wWidth);

    wheelRegion = QRegion(r/2, r/2, r-2*margin, r-2*margin, QRegion::Ellipse);
    wheelRegion.translate(-(r-2*margin)/2, -(r-2*margin)/2);

    int tmp = 2*(margin+wWidth);
    QRegion subRe( r/2, r/2, r-tmp, r-tmp, QRegion::Ellipse );
    subRe.translate(-(r-tmp)/2, -(r-tmp)/2);
    wheelRegion -= subRe;
}
コード例 #4
0
ファイル: colorwheel.cpp プロジェクト: sarbi127/inviwo
void ColorWheel::resizeEvent(QResizeEvent* event) {
    // update wheel region
    QSize size(event->size());
    int diameter = qMin(size.width(), size.height());
    wheelRegion_ = QRegion(diameter/2, diameter/2, diameter-2*margin_, diameter-2*margin_, QRegion::Ellipse);
    wheelRegion_.translate(-(diameter-2*margin_)/2, -(diameter-2*margin_)/2);
    int tmp = 2*(margin_+wheelWidth_);
    QRegion subRe(diameter/2, diameter/2, diameter-tmp, diameter-tmp, QRegion::Ellipse);
    subRe.translate(-(diameter-tmp)/2, -(diameter-tmp)/2);
    wheelRegion_ -= subRe;
    
    // update square region
    int w = qMin(width(), height());
    qreal r = w/2.0 - margin_; // radius of outer circle
    qreal ir = r - wheelWidth_; // radius of inner circle
    qreal m = w/2.0 - ir/std::sqrt(2.0); // left corner of square

    QRectF rect;
    rect.setTopLeft(QPointF(m, m));
    rect.setWidth(2.0 * ir / std::sqrt(2.0));
    rect.setHeight(2.0 * ir / std::sqrt(2.0));
    squareRegion_ = QRegion(rect.toRect());
}