QPainter的使用(画国旗)

来源:互联网 发布:python数据挖掘 pdf 编辑:程序博客网 时间:2024/04/30 13:18

国庆比较无聊,然后用Qt的QPainter画了一面国旗,代码如下:
国旗标准尺寸
源码地址

//代码不是全部代码,只有主要代码void MainWindow::paintEvent(QPaintEvent *e){    qint64 k = 15;    qint64 width = 24;    qint64 height = 16;    QPainter p(this);    p.setBrush(QColor("#F40002"));    p.setPen(QColor("#FFFFFF"));    p.drawRect(0, 0, width*k, height*k);    //首先将坐标原点设为大五角星的中心    p.translate(60, 60);    p.setBrush(QColor("#FAF408"));    p.setPen(QColor("#FAF408"));    //    //画大五角星    QPoint points[3] = {QPoint(0, -36), QPoint(-12, 0),QPoint(12, 0)};    p.setRenderHint(QPainter::Antialiasing);    for(int i = 0; i < 5; i ++)    {        //画三角形构成五角星        p.rotate(72);        p.drawConvexPolygon(points, 3);    }    //四颗小星的中心点    QPoint transLate[4] = {QPoint(60, -36), QPoint(24, 24), QPoint(0, 36), QPoint(-24, 24)};    //四颗小星的偏转角度    qreal rotateAngle[4] = {-90-qRadiansToDegrees(qAtan(0.6)), -90-qRadiansToDegrees(qAtan(1.0/7.0)),                             -qRadiansToDegrees(qAtan(3.5)), -qRadiansToDegrees(qAtan(1.25))};    //1    QPoint points1[3] = {QPoint(0, -12), QPoint(-5, 0),QPoint(5, 0)};    for(int i = 0; i < 4; i ++)    {        p.translate(transLate[i]);        //每次画小五角星前将坐标设为要画的五角星的中心        p.rotate(rotateAngle[i]);        //并且每次都旋转一个角度以对准大五角星        for(int i = 0; i < 5; i ++)        {           p.rotate(72);//五角星由五个三角形组成,每次旋转72°,旋转5次得到五角星           p.drawConvexPolygon(points1, 3);           //画组成五角星的三角形        }        p.rotate(-rotateAngle[i]);    }

这里写图片描述

0 0
原创粉丝点击