QT 矢量绘图和非矢量绘图(一)

本文探讨了在Qt开发中,矢量和非矢量绘图的区别及其应用场景。矢量图形如直线、圆等在放大时不会失真,适合无限缩放;而非矢量绘图通过对像素点操作实现动态曲线绘制,虽然速度较快,但不适合高精度缩放。示例代码展示了如何使用QPainter进行矢量绘图和非矢量绘图的实现。
摘要由CSDN通过智能技术生成

最近开发产品,涉及到了QT的曲线动态绘制,因为涉及到了图形放大,所以引出了矢量,非矢量绘图的概念。
矢量,就是一条有数学数据组成的线段,矩阵,圆,等一系列图形,在Qt的绘图事件paintEvent加载这样的图形,图形无限缩放也不会失真。

QPainter painter(this);
painter.drawPath(path);
painter.drawRect(rect);
painter.drawPoint(point);

非矢量,修改对图片的像素点数据进行修改,在绘图事件中更新这张图片,就能实现动态的曲线绘制效果,但是因为对图片像素点进行操作,所以不需要保存线段的完整数据,每次修改一部分,就将线段进行重置,使得绘画速度非常快。

void init()
{
	image=new QImage(size,QQImage::Format_ARGB32_Premultiplied);
	painter=new QPainter(image);
	//将painter绑定绘图设备
}
void updateImage(QPointF pt)
{
	QPainterPath path;
	QPainterPath end;
	end=path.currentpostion;
	path=QPainterPath();
	path.moveTo(end);
	path.lineTo(pt);
	painter.drawPath(path);
	update(path.boundrounding().adjusted(-10,-10,10,10));
}
void paintEvent(QPaintEvent *)
{
	QPainter painter(this);
	painter.drawImage(0,0,*image);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值