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)); } }
//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 ); }
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; }
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!")); }
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(); }
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); }