qt 2d做图的一些心得


最近在用qt做一个可以显示2维折线图的小工具。用qt相关部分做的时候还是发现了一些问题,记录一下。

1.关于视口和窗口变换,最好不要用改变视口窗口变换来实现图像移动的功能。视口和窗口最好按照1:1变换,用来调整x,y轴方向和原点位置即可。如果说你讲一个500x500的窗口映射成300x10的视口,那么图像会变得很扁。

2.关于y轴的反转。窗口默认的y轴是朝下的,和我们习惯不同 ,用视口窗口变换将其转变为朝上。注意在处理图像移动的时候,我们处理的物理坐标,依旧是y轴向下,计算dy的时候注意不要减反。或者我们不要在视口窗口变换的时候不处理y轴反转,而是在逻辑坐标系中做相应的变换。

3.关于painter.scale操作,他会发生和调整视口窗口映射同样的情况,即x和y轴scale的值相差较大的时候,图像也会发生变形。所以我们依旧在逻辑坐标系中处理放大缩小变化。(不知道是不是translate提供的操作本来就是在修改窗口视口映射)

4注意painter提供的图像移动操作是按照栈的方式存储的,记得变化的时候不要搞反。当时我在做折线的放大缩小和移动操作的时候把顺序搞反了,结果变得很诡异。

5总的来说,在处理2d图的时候,我个人习惯将图形变换操作(尤其是scale)在逻辑坐标系中实现,将其与窗口视口变换分离开来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值