持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情
注:示例为Qt 5.1.1中的示例。
本文旨在剖析Qt示例的源码,总结函数使用方法以及编程思想,提高自己的编程能力。
示例运行效果:
文件目录:
具体实现:
XFormView类:
drawVectorType函数:
这个函数主要完成了矢量图的绘制,也就是示例中的企鹅,通过使用坐标变换、完成曲线、直线、路径的绘制以及颜色的填充。
当我们用到图形的变换的时候,首先选择使用坐标系来控制。通过设置坐标系,就可以控制坐标系内所有图形的变化。
drawPixmapType函数:
图片资源已经在构造函数中加载过了,这里直接用就可以了。首先设置坐标系的中心位置。然后设置绘图设备的缩放、旋转、变形度的值。
这里设置坐标系到图片中心,在进行设置,是为了让坐标系的各种变换都是以中心点为准。
而画图的时候,需要将坐标系的中心点挪到左上角,进行画图。
drawTextType函数:
这个函数主要完成了文字的绘制。
QFont: QFont类指定用于绘制文本的字体。
创建一个字体:
QFont font("Times", 10, QFont::Bold);
QFont font2("Helvetica [Cronyx]", 12);
创建一个字体可以根据自己的需要选择构造函数。也可以创建一个空的字体,然后像示例中一样调用set函数进行各个属性的设置。
QFontMetrics: 提供字体度量信息。QFontMetrics函数计算给定字体的字符和字符串的大小。我们可以通过这个类获取文字的边缘矩形信息。
还有很多其他的函数,有几个函数可以对字体进行操作:ascent(), descent(), height(), leading()和linespace()返回字体的基本大小属性。underlinePos()、overlinePos()、strikeOutPos()和lineWidth()函数返回加下划线、加下划线或删除字符所在行的属性。
updateCtrlPoints函数:
控制点0是图形中心的点,用于拖拽的。控制点1是右边的点,用来控制旋转的。这个函数是HoverPoints信号的槽函数。当HoverPoints当中的点位置发生改变,视图也要发生改变。
未完待续...