zoukankan      html  css  js  c++  java
  • Qt QPainter的使用及矩形、圆形等常见图形的画法

     1 #include<QApplication>
     2 #include <QWidget>
     3 #include <QPainter>
     4 class MyMainWindow:public QWidget
     5 {
     6 public:
     7  MyMainWindow(QWidget *parent = 0);
     8  private:
     9  void paintEvent(QPaintEvent*);
    10  QPainter *paint;
    11 };
    12 
    13 
    14 void MyMainWindow::paintEvent(QPaintEvent*)
    15 
    16 //paintEvent函数由系统自动调用,用不着我们人为的去调用。
    17 {
    18  paint=new QPainter;
    19  paint->begin(this);
    20  paint->setPen(QPen(Qt::blue,4,Qt::DashLine));//设置画笔形式 
    21  paint->setBrush(QBrush(Qt::red,Qt::SolidPattern));//设置画刷形式 
    22  paint->drawRect(20,20,160,160);
    23  paint->end();
    24 }
    25 
    26 
    27 MyMainWindow::MyMainWindow(QWidget*parent):QWidget(parent)
    28 {
    29  setGeometry(100,100,200,200);
    30 }
    31 
    32 
    33 int main(int argc,char**argv)
    34 {
    35  QApplication a(argc,argv);
    36  MyMainWindow w;
    37  w.show();
    38  return a.exec();
    39 }
     
    绘制圆和椭圆
    核心代码:
    1 paint->setPen(QPen(Qt::blue,4,Qt::SolidLine));
    2 paint->drawEllipse(20,20,210,160);
    第1,2个参数分别表示圆/椭圆距左上角的像素数。第3,4个参数表示圆/椭圆的宽度和高度。更加确切地表述,这个圆或椭圆是在矩形中,这个矩形的左上角的顶点在坐标轴中的位置为(20,20),这个圆或椭圆的中心为这个矩形的中心,以下的都相似!!!

    绘制圆角矩形
    核心代码:
    1 paint->setPen(QPen(Qt::blue,4,Qt::SolidLine));
    2 paint->drawRoundRect(20,20,210,160,50,50);
    最后两个参数决定角的圆度。它可以为0到99之间的任意值(99代表最圆)。

    绘制扇形图
    核心代码:
    1 paint->setPen(QPen(Qt::green,4,Qt::SolidLine));
    2 paint->drawPie(20,20,210,160,0,500);
    前四个参数定义圆(与drawEllipse()函数相同)。后两个参数定义圆的样式。0为起始角度(实际单位为1/16度),500为扇形所展开的角度(单位也为1/16度)。

    绘制弦
    核心代码:
    1 paint->setPen(QPen(Qt::green,4,Qt::SolidLine));
    2 paint->drawChord(20,20,210,160,500,1000);
    drawChord()函数与drawPie()函数的参数完全相同。

    绘制圆弧
    核心代码:
    1 paint->setPen(QPen(Qt::green,4,Qt::SolidLine));
    2 paint->drawArc(20,20,210,160,500,1000);
    drawArc()函数与drawPie()函数的参数完全相同。

    绘制贝塞尔曲线
    核心代码:
    1 paint->setPen(QPen(Qt::green,4,Qt::SolidLine));
    2 paint->drawQuadBezier(QPointArray(QRect(20,20,210,160)));
    传递给该函数的唯一一个参数表示一个矩形,在其中创建贝塞尔曲线(其他参数为缺省参数,可以省略)。
  • 相关阅读:
    Hibernate 再接触 事务隔离机制
    Hibernate 再接触 一级缓存 二级缓存 查询缓存
    Hibernate 再接触 性能优化
    Hibernate 再接触 HQL
    Hibernate 再接触 树状结构设计以及学生课程成绩表的设计
    DotNetBar.MetroTilePanel 样式、加载数据、获取数据
    C# superGridControl 样式设置、加载数据、获取数据
    system.data.oracleclient 需要 8.17 需要oracle客户端问题
    程序员必备
    LinQ to sql
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14291179.html
Copyright © 2011-2022 走看看