Пример #1
0
void Draw::brushChanged()
{
    Qt::BrushStyle style = Qt::BrushStyle(brushStyleComboBox->itemData(
        brushStyleComboBox->currentIndex(), IdRole).toInt());

    if (style == Qt::LinearGradientPattern) {
        QLinearGradient linearGradient(0, 0, 100, 100);
        linearGradient.setColorAt(0.0, Qt::white);
        linearGradient.setColorAt(0.2, Qt::green);
        linearGradient.setColorAt(1.0, Qt::black);
        m_renderArea->setBrush(linearGradient);

    } else if (style == Qt::RadialGradientPattern) {
        QRadialGradient radialGradient(50, 50, 50, 70, 70);
        radialGradient.setColorAt(0.0, Qt::white);
        radialGradient.setColorAt(0.2, Qt::green);
        radialGradient.setColorAt(1.0, Qt::black);
        m_renderArea->setBrush(radialGradient);

    } else if (style == Qt::ConicalGradientPattern) {
        QConicalGradient conicalGradient(50, 50, 150);
        conicalGradient.setColorAt(0.0, Qt::white);
        conicalGradient.setColorAt(0.2, Qt::green);
        conicalGradient.setColorAt(1.0, Qt::black);
        m_renderArea->setBrush(conicalGradient);

    } else if (style == Qt::TexturePattern) {
        m_renderArea->setBrush(QBrush(QPixmap(":/resources/brick.png")));

    } else {
        m_renderArea->setBrush(QBrush(Qt::green, style));
    }
}
Пример #2
0
//main display loop, this function will be called again and again by OpenGL
void display()
{
	//Misc.
	glClear(GL_COLOR_BUFFER_BIT);
	glLoadIdentity();

	radialGradient(WIDTH/2, HEIGHT/2, sqrt(2)*WIDTH/2);

	setColor(0, 0, 1);

	flower(100, 100, 100, 10);

	setColor(0, 0, 0);

	for (int i = 0; i < 4; i++) {
		bresenhamLine(D[i * 2], D[i * 2 + 1], D[i * 2 + 2], D[i * 2 + 3]);
	}

	for (int i = 0; i < 5; i++) {
		bresenhamLine(F[i * 2], F[i * 2 + 1], F[i * 2 + 2], F[i * 2 + 3]);
	}

	//draws pixel on screen, width and height must match pixel buffer dimension
	glDrawPixels(WIDTH, HEIGHT, GL_RGB, GL_FLOAT, PixelBuffer);

	//window refresh
	glFlush();
}
void QvkAnimateWindow::paintEvent( QPaintEvent *event ) 
{
  (void)event;
  QPainter painter( this );
  painter.setRenderHints( QPainter::Antialiasing, true );

    QBrush brush;
    if ( radiant == false )
    {
      brush.setStyle( Qt::SolidPattern );
      brush.setColor( color );
    }
    else
    {
      QRadialGradient radialGradient( width()/2, height()/2, diameter/2 );
      radialGradient.setColorAt( 0, color );
      radialGradient.setColorAt( 1, Qt::transparent );
      QBrush brushRadial( radialGradient );
      brush.swap( brushRadial );
    }
  
  painter.setPen( Qt::NoPen );
  painter.setBrush( brush );
  painter.setOpacity ( opacity );
  painter.drawEllipse ( QPoint( width()/2, height()/2 ), diameter/2, diameter/2 );
  
}
Пример #4
0
void PlayerMarker::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
	painter->setRenderHint(QPainter::Antialiasing);
	QRadialGradient radialGradient(QPointF(0,0), radius_);
	radialGradient.setColorAt(0, Qt::white);
	radialGradient.setColorAt(1, color_);
	painter->setBrush(QBrush(radialGradient));
	painter->setPen(color_);
	painter->drawEllipse(QPointF(0,0), radius_, radius_);
}
QBrush UBGraphicsProtractor::fillBrush() const
{
    QColor fillColor = edgeFillColor();// scene()->isDarkBackground() ? sDarkBackgroundFillColor : sFillColor;
    QColor fillColorCenter = middleFillColor();//scene()->isDarkBackground() ? sDarkBackgroundFillColorCenter : sFillColorCenter;
    QColor transparentWhite = Qt::white;
    transparentWhite.setAlpha(scene()->isDarkBackground() ? sDrawTransparency : sFillTransparency);
    QRadialGradient radialGradient(rect().center(), radius(), rect().center());
    radialGradient.setColorAt(0, fillColorCenter);
    radialGradient.setColorAt(1, fillColor);
    return radialGradient;
}
Пример #6
0
void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    /* 1. 绘制线条 */
    painter.drawLine(QPoint(0, 0), QPoint(100, 100));

    /* 创建画笔 */
                     /*   画刷 线宽 画笔风格      画笔端点风格   画笔连接风格 */
    QPen pen(Qt::green, 5, Qt::DotLine, Qt::RoundCap, Qt::RoundJoin);

    //使用画笔
    painter.setPen(pen);
    QRectF rectangle(70.0, 40.0, 80.0, 60.0);
    int startAngle = 30 * 16;  /* 实际角度值 x 16*/
    int spanAngle = 120 * 16;

    /* 2. 绘制圆弧 */
    painter.drawArc(rectangle, startAngle, spanAngle);

    //重新设置画笔
    pen.setWidth(1);
    pen.setStyle(Qt::SolidLine);
    painter.setPen(pen);

    /* 3. 绘制一个矩形 */
    painter.drawRect(160, 20, 50, 40);

    //重新设置画笔
    pen.setColor(QColor(255,0,0));
    painter.setPen(pen);
    //创建画刷
    QBrush brush(QColor(0, 0, 255), Qt::Dense4Pattern);
    //使用画刷
    painter.setBrush(brush);
    /* 4. 绘制椭圆 */
    painter.drawEllipse(220, 20, 60, 40);

    //设置纹理
    brush.setTexture(QPixmap("../myDrawing/yafeilinux.png"));
    //重新使用画刷
    painter.setBrush(brush);
    //定义四个点
    static const QPointF points[4] = {
        QPointF(270.0, 80.0),
        QPointF(290.0, 10.0),
        QPointF(350.0, 30.0),
        QPointF(390.0, 70.0)
    };
    /* 5. 使用四个点绘制多边形 */
    painter.drawPolygon(points, 4);

    /* 6 使用画刷填充一个矩形区域 */
    painter.fillRect(QRect(10, 100, 150, 20), QBrush(Qt::darkYellow));
    //擦除一个矩形区域的内容
    painter.eraseRect(QRect(50, 0, 50, 120));

    /*线性渐变*/
    QLinearGradient linearGradient(QPointF(40, 190), QPointF(70, 190)); // 线性渐变
    /*插入颜色*/
    linearGradient.setColorAt(0, Qt::yellow);
    linearGradient.setColorAt(0.5, Qt::red);
    linearGradient.setColorAt(1, Qt::green);
    /*指定渐变区域以外的区域的扩散方式*/
    linearGradient.setSpread(QGradient::RepeatSpread);  // 重复渐变
    // linearGradient.setSpread(QGradient::PadSpread);   // 使用最近使用的颜色进行填充  默认值
    // linearGradient.setSpread(QGradient::ReflectSpread); // 反射渐变
    /*使用渐变作为画刷*/
    painter.setBrush(linearGradient);
    /* 7 绘制线性渐变*/
    painter.drawRect(10, 170, 90, 40);

    /* 8 辐射渐变*/
    QRadialGradient radialGradient(QPointF(200, 190), 50, QPointF(275, 200));
    radialGradient.setColorAt(0, QColor(255, 255, 100, 150));
    radialGradient.setColorAt(1, QColor(0, 0, 0, 50));
    painter.setBrush(radialGradient);
    painter.drawEllipse(QPointF(200, 190), 50, 50);

    /* 9 锥形渐变 */
    QConicalGradient conicalGradient(QPointF(350, 190), 60);
    conicalGradient.setColorAt(0.2, Qt::cyan);
    conicalGradient.setColorAt(0.5, Qt::blue);
    conicalGradient.setColorAt(0.9, Qt::black);
    painter.setBrush(conicalGradient);
    painter.drawEllipse(QPointF(350, 190), 50, 50);

    /* 10 画笔使用线性渐变来绘制直线和文字 */
    painter.setPen(QPen(linearGradient,2));
    painter.drawLine(0, 280, 100, 280);
    painter.drawText(150, 280,  tr("helloQt!"));
}
Пример #7
0
void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    //绘制线条
    painter.drawLine(QPoint(0, 0), QPoint(100, 100));

    //创建画笔
    QPen pen(Qt::green, 5, Qt::DotLine, Qt::RoundCap, Qt::RoundJoin);
    //使用画笔
    painter.setPen(pen);
    QRectF rectangle(70.0, 40.0, 80.0, 60.0);
    int startAngle = 30 * 16;
    int spanAngle = 120 * 16;
    //绘制圆弧
    painter.drawArc(rectangle, startAngle, spanAngle);

    //重新设置画笔
    pen.setWidth(1);
    pen.setStyle(Qt::SolidLine);
    painter.setPen(pen);
    //绘制一个矩形
    painter.drawRect(160, 20, 50, 40);
    //创建画刷
    QBrush brush(QColor(0, 0, 255), Qt::Dense4Pattern);
    //使用画刷
    painter.setBrush(brush);
    //绘制椭圆
    painter.drawEllipse(220, 20, 50, 50);
    //设置纹理
    brush.setTexture(QPixmap("../myDrawing/yafeilinux.png"));
    //重新使用画刷
    painter.setBrush(brush);
    //定义四个点
    static const QPointF points[4] = {
        QPointF(270.0, 80.0),
        QPointF(290.0, 10.0),
        QPointF(350.0, 30.0),
        QPointF(390.0, 70.0)
    };
    //使用四个点绘制多边形
    painter.drawPolygon(points, 4);

    //使用画刷填充一个矩形区域
    painter.fillRect(QRect(10, 100, 150, 20), QBrush(Qt::darkYellow));
    //擦除一个矩形区域的内容
    painter.eraseRect(QRect(50, 0, 50, 120));

    //线性渐变
    QLinearGradient linearGradient(QPointF(40, 190), QPointF(70, 190));
    //插入颜色
    linearGradient.setColorAt(0, Qt::yellow);
    linearGradient.setColorAt(0.5, Qt::red);
    linearGradient.setColorAt(1, Qt::green);
    //指定渐变区域以外的区域的扩散方式
    linearGradient.setSpread(QGradient::RepeatSpread);
    //使用渐变作为画刷
    painter.setBrush(linearGradient);
    painter.drawRect(10, 170, 90, 40);

    //辐射渐变
    QRadialGradient radialGradient(QPointF(200, 190), 50, QPointF(275, 200));
    radialGradient.setColorAt(0, QColor(255, 255, 100, 150));
    radialGradient.setColorAt(1, QColor(0, 0, 0, 50));
    painter.setBrush(radialGradient);
    painter.drawEllipse(QPointF(200, 190), 50, 50);

    //锥形渐变
    QConicalGradient conicalGradient(QPointF(350, 190), 60);
    conicalGradient.setColorAt(0.2, Qt::cyan);
    conicalGradient.setColorAt(0.9, Qt::black);
    painter.setBrush(conicalGradient);
    painter.drawEllipse(QPointF(350, 190), 50, 50);

    //画笔使用线性渐变来绘制直线和文字
    painter.setPen(QPen(linearGradient,2));
    painter.drawLine(0, 280, 100, 280);
    painter.drawText(150, 280,  tr("helloQt!"));
}
void QScreenDistribution::paintEvent(QPaintEvent *event)
{
    m_screens.clear();

    // Calcul de les posicions on s'haurà de pintar les diferents icones de finestres.
    computeSizesAndPositions();

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);

    QPen pen = QPen(Qt::white, 2, Qt::SolidLine);
    painter.setPen(pen);

    QFont font;
    font.setPixelSize(m_screenNumberPixelSize);
    painter.setFont(font);

    for (int i = 0; i < m_screens.count(); i++)
    {
        if (m_mouseInScreen == i)
        {
            QLinearGradient linearGradient(0.1, 0.1, 1.2, 1.2);
            linearGradient.setCoordinateMode(QGradient::ObjectBoundingMode);
            linearGradient.setColorAt(0, QColor("#777777"));
            linearGradient.setColorAt(1, QColor("#111111"));
            painter.setBrush(QBrush(linearGradient));
            painter.drawRoundedRect(m_screens.at(i), 2, 2);

            QRadialGradient radialGradient(0.9, 2.1, 2.5);
            radialGradient.setCoordinateMode(QGradient::ObjectBoundingMode);
            radialGradient.setColorAt(0, QColor(255, 255, 255, 0));
            radialGradient.setColorAt(0.74, QColor(255, 255, 255, 0));
            radialGradient.setColorAt(0.75, QColor(255, 255, 255, 40));
            radialGradient.setColorAt(1, QColor(255, 255, 255, 0));
            painter.setBrush(QBrush(radialGradient));
            painter.drawRoundedRect(m_screens.at(i), 2, 2);
        }
        else
        {
            painter.setPen(Qt::NoPen);

            QLinearGradient linearGradient(0.1, 0.1, 1.2, 1.2);
            linearGradient.setCoordinateMode(QGradient::ObjectBoundingMode);
            linearGradient.setColorAt(0, QColor("#666666"));
            linearGradient.setColorAt(1, QColor("#000000"));
            painter.setBrush(QBrush(linearGradient));
            painter.drawRoundedRect(m_screens.at(i), 2, 2);

            QRadialGradient radialGradient(0.9, 2.1, 2.5);
            radialGradient.setCoordinateMode(QGradient::ObjectBoundingMode);
            radialGradient.setColorAt(0, QColor(255, 255, 255, 0));
            radialGradient.setColorAt(0.74, QColor(255, 255, 255, 0));
            radialGradient.setColorAt(0.75, QColor(255, 255, 255, 40));
            radialGradient.setColorAt(1, QColor(255, 255, 255, 0));
            painter.setBrush(QBrush(radialGradient));
            painter.drawRoundedRect(m_screens.at(i), 2, 2);

            painter.setPen(pen);
        }

        // Pintar el numero
        painter.drawText(m_screens.at(i), Qt::AlignCenter, QString::number(i + 1));
    }
    event->accept();
}
Пример #9
0
void SvgElementVisitor::visit(clan::DomElement &e)
{
	if (e.get_namespace_uri() != Svg::svg_ns) return;

	// To do: do a more efficient search for the correct handler

	auto local_name = e.get_local_name();
	if (local_name == "a") a(e);
	else if (local_name == "altGlyph") altGlyph(e);
	else if (local_name == "altGlyphDef") altGlyphDef(e);
	else if (local_name == "altGlyphItem") altGlyphItem(e);
	else if (local_name == "animate") animate(e);
	else if (local_name == "animateColor") animateColor(e);
	else if (local_name == "animateMotion") animateMotion(e);
	else if (local_name == "animateTransform") animateTransform(e);
	else if (local_name == "circle") circle(e);
	else if (local_name == "clipPath") clipPath(e);
	else if (local_name == "color-profile") color_profile(e);
	else if (local_name == "cursor") cursor(e);
	else if (local_name == "defs") defs(e);
	else if (local_name == "desc") desc(e);
	else if (local_name == "ellipse") ellipse(e);
	else if (local_name == "feBlend") feBlend(e);
	else if (local_name == "feColorMatrix") feColorMatrix(e);
	else if (local_name == "feComponentTransfer") feComponentTransfer(e);
	else if (local_name == "feComposite") feComposite(e);
	else if (local_name == "feConvolveMatrix") feConvolveMatrix(e);
	else if (local_name == "feDiffuseLighting") feDiffuseLighting(e);
	else if (local_name == "feDisplacementMap") feDisplacementMap(e);
	else if (local_name == "feDistantLight") feDistantLight(e);
	else if (local_name == "feFlood") feFlood(e);
	else if (local_name == "feFuncA") feFuncA(e);
	else if (local_name == "feFuncB") feFuncB(e);
	else if (local_name == "feFuncG") feFuncG(e);
	else if (local_name == "feFuncR") feFuncR(e);
	else if (local_name == "feGaussianBlur") feGaussianBlur(e);
	else if (local_name == "feImage") feImage(e);
	else if (local_name == "feMerge") feMerge(e);
	else if (local_name == "feMergeNode") feMergeNode(e);
	else if (local_name == "feMorphology") feMorphology(e);
	else if (local_name == "feOffset") feOffset(e);
	else if (local_name == "fePointLight") fePointLight(e);
	else if (local_name == "feSpecularLighting") feSpecularLighting(e);
	else if (local_name == "feSpotLight") feSpotLight(e);
	else if (local_name == "feTile") feTile(e);
	else if (local_name == "feTurbulence") feTurbulence(e);
	else if (local_name == "filter") filter(e);
	else if (local_name == "font") font(e);
	else if (local_name == "font-face") font_face(e);
	else if (local_name == "font-face-format") font_face_format(e);
	else if (local_name == "font-face-name") font_face_name(e);
	else if (local_name == "font-face-src") font_face_src(e);
	else if (local_name == "font-face-uri") font_face_uri(e);
	else if (local_name == "foreignObject") foreignObject(e);
	else if (local_name == "g") g(e);
	else if (local_name == "glyph") glyph(e);
	else if (local_name == "glyphRef") glyphRef(e);
	else if (local_name == "hkern") hkern(e);
	else if (local_name == "image") image(e);
	else if (local_name == "line") line(e);
	else if (local_name == "linearGradient") linearGradient(e);
	else if (local_name == "marker") marker(e);
	else if (local_name == "mask") mask(e);
	else if (local_name == "metadata") metadata(e);
	else if (local_name == "missing-glyph") missing_glyph(e);
	else if (local_name == "mpath") mpath(e);
	else if (local_name == "path") path(e);
	else if (local_name == "pattern") pattern(e);
	else if (local_name == "polygon") polygon(e);
	else if (local_name == "polyline") polyline(e);
	else if (local_name == "radialGradient") radialGradient(e);
	else if (local_name == "rect") rect(e);
	else if (local_name == "script") script(e);
	else if (local_name == "set") set(e);
	else if (local_name == "stop") stop(e);
	else if (local_name == "style") style(e);
	else if (local_name == "svg") svg(e);
	else if (local_name == "switch") switch_(e);
	else if (local_name == "symbol") symbol(e);
	else if (local_name == "text") text(e);
	else if (local_name == "textPath") textPath(e);
	else if (local_name == "title") title(e);
	else if (local_name == "tref") tref(e);
	else if (local_name == "tspan") tspan(e);
	else if (local_name == "use") use(e);
	else if (local_name == "view") view(e);
	else if (local_name == "vkern") vkern(e);
}