qt 绘图

绘图系统

QPainter 绘图操作的类,绘图设备一般包括Qwidget、Qpixmap、QImage.他们提供给QPainter画布。

从QWidget类继承的类都有paintEvent()事件,该函数是虚函数,重写该函数。

QPainter 重要的属性

1.pen属性:Qpen对象,控制线条的颜色、宽度、线性。

void setPen(const QPen &pen);
const QPen &pen() const;

2.brush属性:QBrush,区域填充特性,填充的颜色、方式、渐变。

void setBrush(const QBrush &brush);

const QBrush &brush() const;

3.font属性:QFont对象,文字的字体样式、大小等。

void setFont(const QFont &f);

const QFont &font() const;

 

画图

绘图坐标系统的单位是像素。左上角的坐标是(0,0)。

物理坐标,即是视口坐标(viewport)

逻辑坐标,即是窗口坐标(window)

 

获取绘图区的区域

宽度:inline int width() const;

高度:inline int height() const;

1.画点

inline void drawPoint(int x, int y);

2.画线

inline void drawLine(const QPoint &p1, const QPoint &p2);  

在画直线的还可以使用QPainterPath。

QPainterPath 类(绘图路径)提供了一个容器,用于绘图操作,可以创建和重用图形形状。

绘图路径是由许多图形化的构建块组成的对象,例如:矩形、椭圆、直线和曲线

 

3.画由QPainterPath定义的路线

void drawPath(const QPainterPath &path);

4.画pixmap图片

 inline void drawPixmap(const QRect &r, const QPixmap &pm);

5.画矩形

inline void drawRect(const QRect &rect);

6.画文本

void drawText(const QRectF &r, const QString &text, const QTextOption &o = QTextOption());

7.填充

void fillRect(const QRect &, const QColor &color);

 

坐标变换函数

1.平移 inline void translate(qreal dx, qreal dy); //单位是像素

2.旋转 void rotate(qreal a); //单位是度,正数为 顺时针,负数为逆时针

3.缩放 void scale(qreal sx, qreal sy); 大于1放大,小于1缩放

4.保存当前状态:void save();

5.恢复上一次的状态:void restore();

6.复位:void resetTransform();

7.设置视口坐标 (物理坐标)  //基于物理坐标,默认一般以左上角为原点(0,0)

void setViewport(const QRect &viewport);

或inline void setViewport(int x, int y, int w, int h);   

(x,y)为视口的起点,其起点值还是根据widget的左上角的坐标作为原点(0,0)算起。

8.窗口坐标(逻辑坐标)   //具有逻辑坐标,而不能再看物理的坐标,其起点不再是以坐上角(0,0)为原点

void setWindow(const QRect &window);

或inline void setWindow(int x, int y, int w, int h);   

 (x,y)为窗口坐标的左上角的坐标,  不再是以widget的左上角的坐标作为(0,0)算起。

(0,0)可以是根据自己实际情况设定的某一位置。是在视口坐标的基础上,根据自己的要求,划分设定视口坐标。

窗口坐标的优点:只需按照窗口坐标定义来画图,而不用管实际的物理坐标范围的大小。

这样当实际设备大小变化时,绘制图形自动变化大小。这样,是绘图与设备隔离开来。适用不同的设备,大小。

 


 

 

 

 

你可能感兴趣的:(qt)