• QPainter学习


    1、获取painter

    QPainter painter(this);

    2、设置抗锯齿

     painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    3、画圆弧

     QRectF rectangle(10.0, 20.0, 80.0, 60.0);
     int startAngle = 30 * 16;
     int spanAngle = 120 * 16;
    
     QPainter painter(this);
     painter.drawArc(rectangle, startAngle, spanAngle);

    rectangle是绘制的区域;

    startAngle 、spanAngle是开始角度和结束角度,注意乘16,画圆就是360x16=5760

    4、设置画笔

    painter.setPen(QPen(Qt::blue,4,Qt::DashLine));//设置画笔形式 

    5、设置画刷

    painter.setBrush(QBrush(Qt::red,Qt::SolidPattern));//设置画刷形式
    QRadialGradient radialGradient(0, 0, radius, 0, 0);
    radialGradient.setColorAt(0.50, Qt::transparent);
    radialGradient.setColorAt(0.60, color);
    radialGradient.setColorAt(0.67, m_shadowColor);
    radialGradient.setColorAt(0.69, m_bgColor);
    radialGradient.setColorAt(0.89, m_bgColor);
    radialGradient.setColorAt(0.90, m_shadowColor);
    radialGradient.setColorAt(0.95, color);
    radialGradient.setColorAt(1, Qt::transparent);
    painter.setBrush(radialGradient);

    6、画矩形

    painter.drawRect(20,20,160,160);

    7、画圆和椭圆

    先假想一个矩形rect,将圆或椭圆放在矩形正中间,如果矩形是正方形则画的是圆,否则是椭圆

    painter.drawEllipse(20,20,210,160);

    4个参数是矩形的左上角坐标x、y,矩形的宽度、长度

    8、画圆角矩形

    painter.drawRoundRect(20,20,210,160,50,50);

    最后两个参数决定角的圆度,它可以为0到99之间的任意值(99代表最圆)

    9、画扇形图

    painter.drawPie(20,20,210,160,0,500);

    前四个参数定义圆(与drawEllipse()函数相同),后两个参数定义圆的样式。0为起始角度(实际单位为1/16度),500为扇形所展开的角度(单位也为1/16度)。
    10、绘制弦

    painter.drawChord(20,20,210,160,500,1000);

    11、绘制圆弧

    painter.drawArc(20,20,210,160,500,1000);

    12、绘制贝塞尔曲线

    painter.drawQuadBezier(QPointArray(QRect(20,20,210,160)));

     13、绘制文字

    QRectF textRect(-radius, -radius, radius * 2, radius * 2);
    painter.drawText(textRect, Qt::AlignCenter,"hello");

     14、保存和恢复

    painter.save()用于保存当前状态,painter.restore()用于恢复save之前所有状态,如下:

    painter.setxxx1();
    painter.setxxx11();
    painter.save();
    //此时painter为状态1
    painter.setxxx2();
    painter.setxxx22();
    //此时painter为状态2
    painter.restore();//恢复到save之前的状态1

     15、设置字体

    QFont font;
    font.setFamily("Microsoft YaHei");
    font.setPointSize(16);// 大小
    font.setItalic(true);// 斜体
    font.setUnderline(true);// 设置下划线
    font.setOverline(true); // 设置上划线
    font.setCapitalization(QFont::SmallCaps);// 设置字母大小写
    font.setLetterSpacing(QFont::AbsoluteSpacing, 20);// 设置字符间距
    painter.setFont(font);// 使用字体



    长风破浪会有时,直挂云帆济沧海!
    可通过下方链接找到博主
    https://www.cnblogs.com/judes/p/10875138.html
  • 相关阅读:
    使用 GPUOperator 与 KubeSphere 简化深度学习训练与 GPU 监控
    基于 WeDataSphere Prophecis 与 KubeSphere 构建云原生机器学习平台
    在 Kubernetes Pod 中如何获取客户端的真实 IP
    云原生的 WebAssembly 能取代 Docker 吗?
    KubeSphere 开源 KubeEye:Kubernetes 集群自动巡检工具
    对于 Serverless, DevOps, 多云及边缘可观察性的思考与实践
    终于可以像使用 Docker 一样丝滑地使用 Containerd 了
    你真的理解 Kubernetes 中的 requests 和 limits 吗?
    顶点(vertexs) 图元(primitives) 片元(fragments片断) 像素(pixels)
    GLUT回调函数
  • 原文地址:https://www.cnblogs.com/judes/p/14610478.html
Copyright © 2020-2023  润新知