qpainterpath 平移(qpainterpath cubicto)

qpainterpath 平移(qpainterpath cubicto)QPainter 坐标变换相关函数 分组 函数原型 功能 坐标变换 void translate qreal dx qreal dy 坐标系统一定的偏移量 坐标原点平移到新的点 void rotate qreal angle 坐标系统顺时针旋转 一个角度 void scale qreal sx qreal sy 坐标系统缩放 void shear qrael sh qreal sy 坐标系统做扭转变换 状态保存与恢复 void save



QPainter坐标变换相关函数

分组函数原型功能坐标变换void translate(qreal dx,qreal dy)坐标系统一定的偏移量,坐标原点平移到新的点void rotate(qreal angle)坐标系统顺时针旋转-一个角度void scale(qreal sx,qreal sy)坐标系统缩放void shear(qrael sh,qreal sy)坐标系统做扭转变换状态保存与恢复void save()保存painter当前的状态,就是将当前状态压入栈void restore()恢复上一次状态,就是从堆栈中弹出上次的状态void resetTransform()复位所有的坐标变换

1、坐标平移

        坐标平移函数是translate(),其中一种参数形式的函数原型是:

 

       表示将坐标系统水平方向平移个单位,垂直方向平移个单位,在缺省的坐标系统中,单位就是像素。如果是从原始状态平移(dx,dy),那么平移后的坐标原点就移到了(dx,dy)。

        假设一个绘图窗口宽度为300像素,高度为200像素,则其原始坐标系统如图8-10左所示; 若执行平移函数 translate(150,100),则坐标系统水平向右平移150像素,向下平移100像素,平 移后的坐标系统如图8-10右所示,坐标原点在窗口的中心,而左上角的坐标变为(-150,-100), 右下角的坐标变为(150,100)。如此将坐标原点变换到窗口中心在绘制某些图形时是非常方便的。

2、坐标旋转

        坐标旋转的函数是rotate(),其函数原型为:

 

        它是将坐标系统绕坐标原点顺时针旋转angle角度,单位是度。当angle为正数时是顺时针旋 转,为负数时是逆时针旋转。在图8-10右的基础上,若执行rotate(90),则得到图8-11所示的坐标系统。

注意:旋转之后并不改变窗口矩形的实际大小,只是改变了坐标轴的方向。      

        在图8-11的新坐标系下,窗口左上角的坐标变成了(-100,150),而右下角的坐标变成了(100,-150)。

3、缩放

        缩放函数是scale(),其函数原型为:

 

        其中,sx,sy分别为横向和纵向缩放比例,比例大于1是放大,小于1是缩小。

4、状态保存与恢复

        进行坐标变换时,QPainter内部实际上有一个坐标变换矩阵,用save()保存当前坐标状态,用 restore()恢复上次保存的坐标状态,这两个函数 必须配对使用 , 操作的是一个堆栈对象 。

         resetTransform()函数则是复位所有坐标变换操作,恢复原始的坐标系统。

坐标变换绘图实例

(1)绘制3个五角星的程序
        创建一个基于QWidget的窗口的应用程序samp8_123,窗体上不放置任何组件。在Widget类的 构造函数和paintEvent()事件中调用MyPaintFiveStar()函数,MyPaintFiveStar()的代码内容如下:

 

编程小号
上一篇 2025-03-01 23:33
下一篇 2025-03-09 21:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/42006.html