当前位置: 首页 > wzjs >正文

番禺门户网站建设百度搜索收录入口

番禺门户网站建设,百度搜索收录入口,建设游戏网站需要什么设备,杂志 wordpressQPen QPen 是 Qt 框架中用于定义绘图时使用的画笔属性的类。在使用 QPainter 进行 2D 绘图时,QPen 可以控制线条的外观,比如线条的颜色、宽度、样式(如实线、虚线等)、端点样式(如方形端点、圆形端点等)和…

QPen

QPen 是 Qt 框架中用于定义绘图时使用的画笔属性的类。在使用 QPainter 进行 2D 绘图时,QPen 可以控制线条的外观,比如线条的颜色、宽度、样式(如实线、虚线等)、端点样式(如方形端点、圆形端点等)和连接样式(如斜接、圆角连接等)。

主要属性

颜色(QColor):用于指定线条的颜色。可以使用预定义的颜色(如 Qt::red、Qt::blue 等),也可以自定义 RGB 值。
宽度(qreal):指定线条的宽度,单位通常是像素。
样式(Qt::PenStyle):定义线条的样式,例如实线(Qt::SolidLine)、虚线(Qt::DashLine)、点线(Qt::DotLine)等。
端点样式(Qt::PenCapStyle):确定线条端点的外观,如方形端点(Qt::SquareCap)、圆形端点(Qt::RoundCap)等。
连接样式(Qt::PenJoinStyle):用于设置两条线条连接处的样式,如斜接(Qt::MiterJoin)、圆角连接(Qt::RoundJoin)等。

#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QPen>
#include <QPainterPath>class PenExampleWidget : public QWidget {
protected:void paintEvent(QPaintEvent *event) override {Q_UNUSED(event);QPainter painter(this);// 创建不同属性的 QPen 对象并绘制线条// 1. 红色实线,宽度为 2 像素QPen pen1(Qt::red);pen1.setWidth(2);painter.setPen(pen1);painter.drawLine(20, 20, 200, 20);// 2. 蓝色虚线,宽度为 3 像素QPen pen2(Qt::blue);pen2.setWidth(3);pen2.setStyle(Qt::DashLine);painter.setPen(pen2);painter.drawLine(20, 50, 200, 50);// 3. 绿色点线,宽度为 4 像素,圆形端点QPen pen3(Qt::green);pen3.setWidth(4);pen3.setStyle(Qt::DotLine);pen3.setCapStyle(Qt::RoundCap);painter.setPen(pen3);painter.drawLine(20, 80, 200, 80);// 4. 紫色实线,宽度为 5 像素,圆角连接QPen pen4(Qt::magenta);pen4.setWidth(5);pen4.setJoinStyle(Qt::RoundJoin);QPainterPath path;path.moveTo(20, 110);path.lineTo(100, 110);path.lineTo(100, 200);painter.setPen(pen4);painter.drawPath(path);}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);PenExampleWidget widget;widget.setWindowTitle("QPen Example");widget.resize(300, 250);widget.show();return app.exec();
}

头文件包含:
QApplication:管理 Qt 应用程序的资源和事件循环。
QWidget:作为窗口的基类。
QPainter:用于实际的绘图操作。
QPen:用于定义画笔的属性。
自定义窗口类 PenExampleWidget:
继承自 QWidget,并重写 paintEvent 函数,在该函数中进行绘图操作。
paintEvent 函数:
红色实线:创建 pen1,设置颜色为红色,宽度为 2 像素,然后使用 painter.setPen(pen1) 设置画笔,最后绘制一条水平直线。
蓝色虚线:创建 pen2,设置颜色为蓝色,宽度为 3 像素,样式为虚线(Qt::DashLine),再设置画笔并绘制直线。
绿色点线:创建 pen3,设置颜色为绿色,宽度为 4 像素,样式为点线(Qt::DotLine),端点样式为圆形(Qt::RoundCap),然后绘制直线。
紫色实线及圆角连接:创建 pen4,设置颜色为紫色,宽度为 5 像素,连接样式为圆角连接(Qt::RoundJoin)。使用 QPainterPath 创建一个路径,包含两条线段,最后使用设置好的画笔绘制该路径。
主函数:
创建 QApplication 对象,启动应用程序。
创建 PenExampleWidget 实例,设置窗口标题和大小,并显示窗口。
调用 app.exec() 进入事件循环,等待用户操作。
在这里插入图片描述

看到窗口中绘制了四条不同样式的线条,直观展示了 QPen 不同属性的效果。

QBrush

QBrush 是 Qt 框架中用于定义填充图案和颜色的类,在使用 QPainter 进行 2D 绘图时,QBrush 可用于填充各种图形(如矩形、椭圆等),控制图形内部的颜色和填充样式。

主要属性

颜色(QColor):指定填充的颜色,可以使用预定义的颜色(如 Qt::red、Qt::blue 等),也可以通过 RGB 值自定义颜色。
样式(Qt::BrushStyle):定义填充的样式,常见的样式有:
Qt::SolidPattern:实心填充,使用指定的颜色完全填充图形。
Qt::Dense1Pattern - Qt::Dense7Pattern:不同密度的疏密填充图案。
Qt::HorPattern、Qt::VerPattern、Qt::CrossPattern 等:水平、垂直、交叉等线条图案。
渐变(QGradient):除了纯色填充,QBrush 还支持使用渐变填充,如线性渐变(QLinearGradient)、径向渐变(QRadialGradient)和锥形渐变(QConicalGradient)。

#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QBrush>
#include <QLinearGradient>class BrushExampleWidget : public QWidget {
protected:void paintEvent(QPaintEvent *event) override {Q_UNUSED(event);QPainter painter(this);// 1. 实心填充QBrush solidBrush(Qt::red, Qt::SolidPattern);painter.setBrush(solidBrush);painter.drawRect(20, 20, 100, 100);// 2. 疏密填充QBrush denseBrush(Qt::blue, Qt::Dense3Pattern);painter.setBrush(denseBrush);painter.drawRect(140, 20, 100, 100);// 3. 线性渐变填充QLinearGradient linearGradient(20, 140, 120, 140);linearGradient.setColorAt(0.0, Qt::green);linearGradient.setColorAt(1.0, Qt::yellow);QBrush gradientBrush(linearGradient);painter.setBrush(gradientBrush);painter.drawRect(20, 140, 100, 100);}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);BrushExampleWidget widget;widget.setWindowTitle("QBrush Example");widget.resize(260, 260);widget.show();return app.exec();
}

头文件包含
QApplication:管理 Qt 应用程序的资源和事件循环。
QWidget:作为窗口的基类。
QPainter:用于实际的绘图操作。
QBrush:用于定义填充的属性。
QLinearGradient:用于创建线性渐变。
2. 自定义窗口类 BrushExampleWidget
继承自 QWidget,并重写 paintEvent 函数,在该函数中进行绘图操作。
3. paintEvent 函数
实心填充:
创建 solidBrush,使用红色(Qt::red)和实心填充样式(Qt::SolidPattern)。
使用 painter.setBrush(solidBrush) 设置画刷,然后使用 painter.drawRect 绘制一个矩形,该矩形将被红色实心填充。
疏密填充:
创建 denseBrush,使用蓝色(Qt::blue)和 Qt::Dense3Pattern 疏密填充样式。
设置画刷并绘制另一个矩形,该矩形将显示为蓝色的疏密填充效果。
线性渐变填充:
创建 linearGradient 线性渐变对象,设置起始点和结束点,以及渐变的颜色停止点(从绿色到黄色)。
使用 gradientBrush 画刷将线性渐变应用到填充中。
设置画刷并绘制第三个矩形,该矩形将显示为从绿色到黄色的线性渐变填充效果。
4. 主函数
创建 QApplication 对象,启动应用程序。
创建 BrushExampleWidget 实例,设置窗口标题和大小,并显示窗口。
调用 app.exec() 进入事件循环,等待用户操作。

在这里插入图片描述

看到窗口中绘制了三个矩形,分别展示了实心填充、疏密填充和线性渐变填充的效果。

与图形抗锯齿的关联

#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QPen>
#include <QBrush>class AntialiasingExampleWidget : public QWidget {
protected:void paintEvent(QPaintEvent *event) override {Q_UNUSED(event);QPainter painter(this);// 不开启抗锯齿绘制椭圆QPen pen1(Qt::red, 2);QBrush brush1(Qt::yellow, Qt::SolidPattern);painter.setPen(pen1);painter.setBrush(brush1);painter.drawEllipse(20, 20, 100, 100);// 开启抗锯齿绘制椭圆painter.setRenderHint(QPainter::Antialiasing);QPen pen2(Qt::blue, 2);QBrush brush2(Qt::green, Qt::SolidPattern);painter.setPen(pen2);painter.setBrush(brush2);painter.drawEllipse(150, 20, 100, 100);}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);AntialiasingExampleWidget widget;widget.setWindowTitle("Antialiasing Example");widget.resize(300, 150);widget.show();return app.exec();
}

包含了必要的 Qt 头文件,分别用于管理应用程序、创建窗口、进行绘图操作、设置
AntialiasingExampleWidget
继承自 QWidget 并重写 paintEvent 函数,在该函数中进行绘图操作。
创建一个红色、宽度为 2 像素的 QPen 和一个黄色实心填充的 QBrush,然后使用 QPainter 在坐标 (20, 20) 处绘制一个宽度和高度均为 100 的椭圆,此时未开启抗锯齿功能。
接着,使用 setRenderHint(QPainter::Antialiasing) 开启抗锯齿功能。创建一个蓝色、宽度为 2 像素的 QPen 和一个绿色实心填充的 QBrush,然后在坐标 (150, 20) 处绘制另一个宽度和高度均为 100 的椭圆。
创建 QApplication 对象来管理应用程序,创建 AntialiasingExampleWidget 窗口实例,设置窗口标题和大小,显示窗口并进入应用程序的事件循环。
在这里插入图片描述
看到窗口中绘制了两个椭圆,开启抗锯齿的椭圆边缘会更加平滑,而未开启抗锯齿的椭圆边缘可能会有锯齿状。

http://www.dtcms.com/wzjs/218775.html

相关文章:

  • 淘宝美工做兼职的网站推广产品
  • 莱州相亲网站太原全网推广
  • 柳州做网站设计的公司微信引流推广精准粉
  • 台州市建设规划局网站班子成员seo优化的方法
  • 有经验的赣州网站建设今日头条官网
  • 长沙网站制作公司有哪些seo人才招聘
  • 深圳电商平台网站百度市场应用官方app
  • 门窗企业网站建设微信小程序怎么开通
  • 外国网站签到做任务每月挣钱黄页网络的推广软件
  • 响应式网站开发毕业论文搜索指数的数据来源
  • 营销网站建设内容如何利用网络广告进行推广
  • 广西企业响应式网站建设公司哈尔滨企业网站模板建站
  • 做网站免费空间优化关键词排名公司
  • 建设网站转赚钱吗百度账号人工申诉
  • 广西网站建设费用百度seo建议
  • 怎么做优惠券网站权重查询工具
  • 电子商城网站制作数据库长沙全网推广
  • php网站开发的发展前景江门网站建设
  • 17网站一起做网店增城合肥网络公司
  • 网站推广软件推荐推广网站大全
  • 网站收录排名怎么做昆明seo技术培训
  • 怎样进入网站的后台电子技术培训机构
  • 长春网站制作诚推源晟市场调研方案怎么写
  • 哪个网站专门做高清壁纸南阳seo
  • 郑州做网站优化价格新余seo
  • 快手作品推广网站农产品营销方案
  • js代码放wordpress哪里谷歌seo新规则
  • 特价旅游机票网站建设4p 4c 4r营销理论区别
  • 网页设计1000字心得seo研究中心qq群
  • 海拉尔网站制作汕头seo外包公司