• 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, "扇形");
    
    
    

    下面是代码运行的结果:



  • 相关阅读:
    Doing Homework 简单dp&&状态压缩
    嫖裤子序列
    王宁宁宁
    友军寻路法
    Viviani
    ccf 201909-3
    ccf 201909-5
    链式前向星
    ccf-201909-04
    ccf -201909-2
  • 原文地址:https://www.cnblogs.com/raiven2008/p/4215197.html
Copyright © 2020-2023  润新知