• QPainter的使用(画国旗)


    国庆比较无聊,然后用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]);
    
        }

    这里写图片描述

  • 相关阅读:
    RTX Server license update
    Dell Raid[转载]
    Dell2950 server OS Installation
    Paragon Partition Manager 9.0 Professional管理磁盘分区
    Upgrade Backup Exec License
    C# 3.0将偷懒进行到底
    hibernate学习笔记
    开发c#插件
    Socket简单通讯
    .NET牛人应该知道些什么(转)?
  • 原文地址:https://www.cnblogs.com/topk/p/6580095.html
Copyright © 2020-2023  润新知