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
  • 相关阅读:
    解析大型.NET ERP系统 权限模块设计与实现
    Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架
    解析大型.NET ERP系统 单据编码功能实现
    解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计
    Windows 10 部署Enterprise Solution 5.5
    解析大型.NET ERP系统 设计异常处理模块
    解析大型.NET ERP系统 业务逻辑设计与实现
    解析大型.NET ERP系统 多国语言实现
    Enterprise Solution 管理软件开发框架流程实战
    解析大型.NET ERP系统 数据审计功能
  • 原文地址:https://www.cnblogs.com/judes/p/14610478.html
Copyright © 2011-2022 走看看