QT学习之QPainter

关于painter绘图

QImage是绘图设备,而QPainter则是画笔,painter(&image)的意思是将图绘制在image上进行显示。

image = QImage(w, h, QImage::Format_RGB32);  //画布的初始化大小设为w*h,使用32位颜色
QColor backColor = qRgb(255, 255, 255);    //画布初始化背景色使用白色
image.fill(backColor);//对画布进行填充
    
QPainter painter(&image);
painter.setRenderHint(QPainter::Antialiasing, true);  //设置反锯齿模式
关于缩放:

painter.scale(2, 2)可以进行所绘制图形的放大2倍显示,就是在相同image画布上,painter显示的比例变大了,因此绘制时看到的也会变大。
而image.scaled(w, h, …, …)是针对整体image的缩放,更多的是实现要加载一张png图片,图片适应窗口大小的功能。

painter的一些基础用法:
QPen pen;
pen.setColor(Qt::black);  // 画笔颜色设置
pen.setWidth(7);  // 画笔宽度设置
QFont font = QFont("宋体", 26, QFont::Bold);  // 字体设置
font.setPixelSize(16);  //字体像素大小设置

painter.setPen(pen);  // painter设置画笔
painter.setFont(font);  // painter设置字体
painter.drawText(QRect(x, y, w, h), Qt::LeftEdge, QString("文字"));  //绘制文字
painter.drawPoint(x, y);  // 绘制点;也可以绘制线line、圆ellipse、矩形rect等
painter绘制坐标系

这里需要根据原始点的坐标进行一个变换,使得绘制的坐标系及坐标点 对应到画布上。
pX、pY是坐标原点在image上的实际坐标,例如正常坐标原点是在(0,0)处,如果想要绘制在500*550的画布上,可以设置pX = 250, pY = 400,这样后续图像就会以此位置为原点进行绘制。

int maxX = 5, maxY = 7;  // xy轴的最大值、最小值
int minX = -5, minY = -3;
double kX = (double)axisWidth / (maxX - minX);  //x方向的比例系数
double kY = (double)axisHeight / (maxY - minY);  //y方向的比例系数
QPolygonF S;
S.push_back(QPointF(pX + kX * x, pY - kY * y));  // 变换后才能展示在画布上
...
painter.setPen(pen);
painter.drawPoints(S);  // 在坐标轴(image画布)上绘制多个点
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值