介绍一下背景哈哈哈:在Qt中使用QPainter进行画图的时候,即用对地图的使用的时候,我发现了一个让我十分惊讶的地方!!!我在声明QRectF RR;//正方形的时候,在QRectF这个类中有moveTo这个算法,然而当我QPolygon triangle;//三角形的时候,却发现没有moveTo这个内置函数,了解过这些方面的朋友们都知道moveTo(qreal x,qreal y)和另一个内置函数translate的区别,moveTo在移动的时候并不会改变原来的坐标系,即保持在同一个坐标系中移动,但是translate却不一样,它在执行的时候每执行一次,地图上都会出现新的原点,例如translate(50,50)之后地图上的原点将由(0,0)变到(50,50)这样的话对某些应用层面来说带来了很多不便。
问题:三角形的移动如何才能做到即能平移,又能不改变地图远点的坐标呢(该方法仅供参考)?
解决方法:有一种方法就是使用setPoints这个内置函数,学过这方面知识的都知道这个函数一般来说是用来构建一个图形的,当今天我发现他的一个新用法,就是当我们想平移而不改变原点坐标的时候,我们可以在构建图形的原来的基础上加上要平移的量值,比如:最初的时候我是这样来构建三角形的:
triangle.setPoints(3,25,0,-10,-25,-10,25);
但我想移动到(100,100)的时候我们就可以:
triangle.setPoints(3,25+100,0+100,-10+100,-25+100,-10+100,25+100);
相比起translate,用这种方法当你在想相对于初始原点移动的时候就不会十分的麻烦,且地图的原点可以保持不变。
希望我的这个办法能够帮助到更多的朋友们!!!