Qt5学习笔记(2)——二维图形

Qt的二维图形引擎是基于QPainter类的。QPainter既可以绘制几何形状(点、线、矩形、椭圆、弧形、弦形、饼状图多边形和贝塞尔曲线),也可以绘制像素映射图像和文字。

功能还是十分强大的,下面直接放我写的代码:

     QPainter painter(this);
     QPen pen;
     // 画一条直线
     //pen.setStyle(Qt::DashLine);//设置为虚线
     pen.setColor(Qt::red);//设置画笔为红色
     pen.setWidth(12);//设置画笔宽度
     painter.setPen(pen);//设置画笔
     painter.drawLine(rect().topLeft(), rect().bottomRight());
     painter.drawLine(10,50,50,200);

     // 画多个点(5个)
     pen.setColor(Qt::gray);//设置画笔为红色
     pen.setWidth(6);//设置画笔宽度
     painter.setPen(pen);//设置画笔
     QPointF pointf[5];
     for (int i=0; i<5; ++i)
     {
         pointf[i].setX(20.0+i*50.0);
         pointf[i].setY(400.0);
     }
     painter.drawPoints(pointf, 5);

    // 画一个空心正方形
     pen.setColor(Qt::darkRed);
     pen.setWidth(5);
     painter.setPen(pen);
     painter.drawRect(220, 5, 100, 100);

     // 画一个实心矩形
     pen.setColor(Qt::red);
     pen.setWidth(8);
     painter.setPen(pen);
     QBrush bruch(Qt::SolidPattern);//画刷
     bruch.setColor(Qt::green);
     painter.setBrush(bruch);//设置画刷
     painter.drawRect(QRect(350, 10, 100, 200));

     //画一个实心圆和扇形
     pen.setColor(Qt::blue);
     pen.setWidth(13);
     painter.setPen(pen);
     bruch.setColor(Qt::red);
     painter.setBrush(bruch);
     painter.drawEllipse(500,10,150,150);//园,第1,2个参数分别表示圆距左上角的像素数。第3,4个参数表示圆的宽度和高度。
     painter.drawPie(450,200,200,200,0,1000);//扇形,前四个参数定义圆(与drawEllipse()函数相同)。后两个参数定义圆的样式。0为起始角度(实际单位为1/16度),1000为扇形所展开的角度(单位也为1/16度)。

     // 画一个多边形(三角形)
     QPolygonF polygon;
     polygon << QPointF(350.0, 320.0) << QPointF(400.0, 400.0) << QPointF(280.0, 400.0);//顺时针取点
     pen.setColor(Qt::yellow);
     pen.setWidth(7);
     painter.setPen(pen);
     painter.setBrush(bruch);
     painter.drawPolygon(polygon, Qt::WindingFill);

     //画一个QString
     pen.setColor(Qt::black);
     QFont font("arial",25,QFont::Bold,true); //设置字体的类型,大小,加粗,斜体
     font.setUnderline(true);//设置下划线
     font.setOverline(true);//设置上划线
     font.setCapitalization(QFont::SmallCaps);//设置小型字母大写
     font.setLetterSpacing(QFont::AbsoluteSpacing,5);//设置间距
     painter.setFont(font);//添加字体
     painter.setPen(pen);
     painter.drawText(50, 300, "windows QT");

     //显示中文字
     pen.setColor(Qt::black);
     QFont font1("宋体",12,QFont::DemiBold,false); //设置字体的类型,大小,黑体,不斜体
     font.setUnderline(false);//设置下划线
     font.setOverline(false);//设置上划线
     font.setLetterSpacing(QFont::AbsoluteSpacing,1);//设置间距
     painter.setFont(font1);//添加字体
     painter.setPen(pen);
     painter.drawText(245, 130, "正方形");
     painter.drawText(380, 235, "矩形");
     painter.drawText(557, 185, "圆形");
     painter.drawText(320, 425, "三角形");
     painter.drawText(580, 325, "扇形");


下面是代码运行的结果:



原文地址:https://www.cnblogs.com/raiven2008/p/4215197.html