刚刚开始学习Qt不久,才开始渐渐地熟悉基础内容,学习过程中的一些知识的总结和感悟希望通过博客记录下来,与大家分享学习的同时,也是对自己坚持下去的鞭策,废话不多说了,开始第一次的小总结吧。

Qt提供了强大的2D绘图系统,主要基于QPainter、QPaintDevice、QPaintEngine这三个类。

其中QPainter用于执行绘图操作,QPaintDevice提供绘图设备,是一个二维空间的抽象,QPaintEngine提供一些接口,可以用于QPainter在不同的设备上进行会绘制。

基本的绘制与填充

    1. 绘制图形QPainter类的使用,其有两种构造函数:

       //构造函数一
      QPainter painter(this);
      ...
      //构造函数二
      QPainter painter;
      painter.begin(this);
      ...
      painter.end();

      this表明绘图设备,构造函数一中begin()自动调用,创建对象时立即开始绘图,在析构函数中调用end()结束绘图。注意:无论使用哪种方式都必须指定绘图设备,否则无法绘制。

    2. 使用画笔
       QPen()
      QPen(Qt::PenStyle style)
      QPen(const QColor & color)
      QPen(const QBrush & brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin)
      QPen(const QPen & pen)
      QPen(QPen && pen)

      在第4行的构造函数中,QBrush brush表示画笔使用的画刷,qreal width表示线宽,Qt::PenStyle style表示画笔风格,Qt::PenCapStyle cap表示画笔端点风格,Qt::PenJoinStyle join表示画笔连接风格。这几个参数也可以在创建对象后使用函数setBrush()、setWidth()、setStyle()、setCapStyle()、setJoinStyle()来设置。

    3. 使用画刷
       QBrush()
      QBrush(Qt::BrushStyle style)
      QBrush(const QColor & color, Qt::BrushStyle style = Qt::SolidPattern)
      QBrush(Qt::GlobalColor color, Qt::BrushStyle style = Qt::SolidPattern)
      QBrush(const QColor & color, const QPixmap & pixmap)
      QBrush(Qt::GlobalColor color, const QPixmap & pixmap)
      QBrush(const QPixmap & pixmap)
      QBrush(const QImage & image)
      QBrush(const QBrush & other)
      QBrush(const QGradient & gradient)
    4. 渐变填充Qt支持三种渐变:
      1. 线性渐变 QLinearGradient
      2. 辐射渐变 QRadialGradient
      3. 锥形渐变 QConicalGradient

Qt中2D绘图问题总结(一)----------基本的绘制与填充的更多相关文章

  1. Qt中2D绘图问题总结(二)----------坐标系统

    坐标系统 使用QPainter绘制时使用到逻辑坐标,然后转换成绘图设备的物理坐标. 逻辑坐标到物理坐标的映射由QPainter的worldTransform()函数.QPainter的viewport ...

  2. 使用Win2D在UWP程序中2D绘图(二)

    绘制API 首先还是看一下前文的的示例: args.DrawingSession.DrawEllipse(155, 115, 80, 30, Colors.Black, 3);    args.Dra ...

  3. 使用Win2D在UWP程序中2D绘图(一)

    在新的Windows UWP程序中,引入了一个新的API库: Win2D.它是一个d2d的封装,可以直接使用C#来快速实现高效2D绘图了.这个API虽然在Win8.1时代就开始着手开发了,但最近才完善 ...

  4. qt 中画线时如何设置笔的颜色和填充

    在上一次介绍中已经实现了自定义控件,并把Widget 放入了主界面中,画了一个圆,具体可参考“QT 自定义窗口” 下面我们介绍一下如何设置画笔颜色和所画图形的填充颜色. 画笔颜色: void Circ ...

  5. Qt 2D绘图之四:绘图中的其他问题

    一.重绘事件 前面讲到的所有绘制操作都是在重绘事件处理函数paintEvent()中完成的,是QWidget类中定义的函数.一个重绘事件用来重绘一个部件的全部或者部分区域,下面几个原因中的任意一个都会 ...

  6. Qt 2D绘图之三:绘制文字、路径、图像、复合模式

    一.绘制文字 除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::font ...

  7. Qt 2D绘图之二:抗锯齿渲染和坐标系统

    一.抗锯齿渲染 1.1 逻辑绘图 图形基元的大小(宽度和高度)始终与其数学模型相对应,下图示意了忽略其渲染时使用的画笔的宽度的样子. 1.2 物理绘图(默认情况) 在默认的情况下,绘制会产生锯齿,并且 ...

  8. Qt 2D绘图之一:基本图形绘制和渐变填充

    Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类.它们三者的关系如下图所示: QP ...

  9. qt 2D绘图技巧

    2D绘图 Qt4中的2D绘图部分称为Arthur绘图系统.它由3个类支撑整个框架,QPainter,QPainterDevice和QPainterEngine.QPainter用来执行具体的绘图相关操 ...

随机推荐

  1. js基础:函数表达式和函数声明

    函数表达式和函数声明的区别.实际上,解析器在向执行环境中加载数据是,对函数表达式和函数声明并非一视同仁.解析器会率先读取函数声明,并使其在执行任何代码之前可用.而函数表达式,则必须等到解析器执行到它所 ...

  2. windows无法访问指定设备路径或文件。您可能没有合适的权限访问

    试试退出杀毒软件试试,被杀毒软件阻拦了.

  3. 解决IE7和IE6不支持javaScript中的indexOf函数的问题

    我这里是针对两个字符串的,如果是字符数组也差不多,代码如下: function indexCheck(str, sortStr) { str = String(str);// 将参数处理下,避免有数字 ...

  4. 通过form表单获取值

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  5. 拾取模型的原理及其在THREE.JS中的代码实现

    1. Three.js中的拾取  1.1. 从模型转到屏幕上的过程说开 由于图形显示的基本单位是三角形,那就先从一个三角形从世界坐标转到屏幕坐标说起,例如三角形abc 乘以模型视图矩阵就进入了视点坐标 ...

  6. guava学习--monitor

    转载:https://my.oschina.net/realfighter/blog/349924   https://my.oschina.net/realfighter/blog/349926 M ...

  7. pandas筛选0,3,6开头的行

    http://stackoverflow.com/questions/15325182/how-to-filter-rows-in-pandas-by-regex dbstk.loc[dbstk.ST ...

  8. [原创]C#应用WindowsApi实现查找(FindWindowEx)文本框(TextBox、TextEdit)。

    /// <summary> /// 获取文本框控件 /// </summary> /// <param name="hwnd">文本框所在父窗口 ...

  9. ORACLE 误删除视图恢复

    1.使用 dba_views 回退到特定时间段,查看定义 select view_name,text from (select * From dba_views AS OF TIMESTAMP(SYS ...

  10. Java: RandomAccessFile

    RandeomAccessFile虽然是java.io中的成员,但该类只继承了Object类,实现了DataOut, DataIn, Closeable等接口.此类的实例支持对文件的随机访问和读取.随 ...