zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    YOLOV2相对于YOLOV1的改进
    在训练过程中loss出现NaN的原因以及可以采取的方法
    出现梯度消失和梯度爆炸的原因及解决方案
    Batch Normalization 原理
    几种激活函数的对比(二)
    几种激活函数对比(一)
    Leetcode 830. Positions of Large Groups
    Leetcode 985. Sum of Even Numbers After Queries
    python中的赋值与拷贝(浅拷贝与深拷贝)
    Leetcode 665. Non-decreasing Array
  • 原文地址:https://www.cnblogs.com/judes/p/14610478.html
Copyright © 2011-2022 走看看