Qt 绘图QPainter < 二 >
这里是对
QPainter
样例进行补充,以下是一些基本图形绘制、画笔和画刷设置,以及坐标变换的功能及其部分解释:
1. 绘制基本图形:
1.1 线段 (drawLine
):
// 绘制直线段,参数为两个端点的坐标
painter.drawLine(QPointF(10, 10), QPointF(100, 100));
1.2 散点 (drawPoint
):
// 绘制单个点,可用于标记某一位置或在绘制中的辅助点
painter.drawPoint(50, 50);
1.3 多线段 (drawPolyline
):
// 绘制折线,通过连接多个点形成线段
QPointF points[] = {QPointF(20, 20), QPointF(50, 80), QPointF(80, 20)};
painter.drawPolyline(points, 3);
1.4 多边形 (drawPolygon
):
// 绘制多边形,通过连接多个点形成闭合区域
QPointF points[] = {QPointF(20, 20), QPointF(50, 80), QPointF(80, 20)};
painter.drawPolygon(points, 3);
1.5 矩形 (drawRect
):
// 绘制矩形,参数为矩形左上角的坐标和宽高
painter.drawRect(20, 20, 60, 40);
1.6 圆角矩形 (drawRoundRect
):
// 绘制圆角矩形,除了矩形参数外,还有圆角的横向和纵向半径
painter.drawRoundRect(20, 20, 60, 40, 10, 10);
1.7 椭圆 (drawEllipse
):
// 绘制椭圆,参数为椭圆外接矩形的左上角坐标和宽高
painter.drawEllipse(20, 20, 60, 40);
1.8 弧线 (drawArc
):
// 绘制弧线,参数为弧线外接椭圆的左上角坐标、宽高和起始角度与跨度
painter.drawArc(20, 20, 60, 40, 30 * 16, 120 * 16);
1.9 弦形 (drawChord
):
// 绘制弦形,与弧线类似,但会封闭弧线形成弦形
painter.drawChord(20, 20, 60, 40, 30 * 16, 120 * 16);
1.10 扇形 (drawPie
):
// 绘制扇形,与弧线类似,但会封闭形成扇形
painter.drawPie(20, 20, 60, 40, 30 * 16, 120 * 16);
1.11 绘制路径 (drawPath
)(更多见<三>):
// 使用路径对象进行绘制,路径可以包含多个线段、曲线段等
QPainterPath path;
path.moveTo(10, 10);
path.lineTo(50, 80);
path.lineTo(90, 10);
painter.drawPath(path);
1.12 文字 (drawText
):
// 在指定位置绘制文本,可以设置字体、大小等属性
painter.drawText(20, 20, "Hello, Qt!");
1.13 图片 (drawImage
):
// 在指定位置绘制图片,参数为图片对象
QImage image("path/to/image.png");
painter.drawImage(20, 20, image);
2. 设置画笔和画刷详解:
在Qt中,画笔(QPen
)和画刷(QBrush
)是绘图外观控制的关键元素。画笔用于定义线条的样式、颜色等属性,而画刷则用于填充封闭图形的区域。以下是对设置画笔和画刷的讲解。
2.1. 画笔(QPen
):
2.1.1 颜色 (setColor
):
设置画笔的颜色。颜色可以使用Qt预定义的颜色,也可以使用RGB值。
QPen pen;
pen.setColor(Qt::red); // 使用Qt预定义的颜色
// 或者
pen.setColor(QColor(255, 0, 0)); // 使用RGB值
2.1.2 线条样式 (setStyle
):
设置线条的样式,如实线、虚线、点线等。
pen.setStyle(Qt::DashLine); // 设置为虚线
2.1.3 线宽 (setWidth
):
设置线条的宽度。
pen.setWidth(2); // 设置线宽为2像素
2.1.4 端点样式 (setCapStyle
):
设置线条端点的样式,如平头、圆头等。
pen.setCapStyle(Qt::RoundCap); // 设置为圆头
2.1.5 连接样式 (setJoinStyle
):
设置线条连接点的样式,如圆角连接等。
pen.setJoinStyle(Qt::RoundJoin); // 设置为圆角连接
2.1.6 虚线模式 (setDashPattern
):
设置虚线模式,即定义虚线的样式。
pen.setDashPattern({4, 4}); // 设置为交替4像素的实线和虚线
2.1.7 透明度 (setOpacity
):
设置画笔的透明度。
pen.setOpacity(0.7); // 设置透明度为0.7
2.2. 画刷(QBrush
):
2.2.1 颜色 (setColor
):
设置画刷的颜色。
QBrush brush;
brush.setColor(Qt::green); // 使用Qt预定义的颜色
// 或者
brush.setColor(QColor(0, 255, 0)); // 使用RGB值
2.2.2 图案样式 (setStyle
):
设置填充区域的图案样式,如实体填充、横线填充等。
brush.setStyle(Qt::CrossPattern); // 设置为十字叉图案
2.2.3 渐变填充 (setGradient
):
设置渐变填充。
QLinearGradient gradient(0, 0, 100, 100);
gradient.setColorAt(0, Qt::red);
gradient.setColorAt(1, Qt::yellow);
brush = QBrush(gradient);
2.2.4 贴图填充 (setTexture
):
使用一张图片作为填充图案。
QPixmap pixmap("path/to/image.png");
brush.setTexture(pixmap);
2.2.5 透明度 (setOpacity
):
设置画刷的透明度。
brush.setOpacity(0.5); // 设置透明度为0.5
2.3. 应用到绘图:
将设置好的画笔和画刷应用到QPainter
对象上。
QPainter painter(this);
painter.setPen(pen); // 应用画笔
painter.setBrush(brush); // 应用画刷
// 进行绘制操作...
这些设置可以根据具体的需求进行组合和调整,使得绘制的图形更加多样化和灵活。在绘图过程中,合理配置画笔和画刷是实现丰富图形效果的关键。
3. 坐标变换:
3.1 原点水平、垂直偏移 (translate
):
// 平移坐标系,改变原点的位置
painter.translate(20, 20);
3.2 旋转 (rotate
):
// 以原点为中心旋转坐标系
painter.rotate(45);
3.3 缩放 (scale
):
// 缩放坐标系,影响所有后续的绘制
painter.scale(2, 2);
这些功能的灵活使用可以实现丰富多彩的图形,而坐标变换的运用使得在绘图中更加方便实现复杂的效果。