Qt-Day08-学习笔记

  • 时间:
  • 浏览:
  • 来源:互联网

2D绘画和鼠标事件

  • 1. 绘图事件处理
  • 2. 绘制文本
  • 3. 画线
  • 4. 绘制矩形
  • 5. 绘制弧线
  • 6. 绘制椭圆
  • 7. 绘制多边形
  • 8. 显示图片

1. 绘图事件处理

//他是系统程序自动调用的,进行实时绘制界面
void Widget::paintEvent(QPaintEvent *event)        //窗口绘制的一个虚函数
{
    QPainter painter(this);                             //一定要知名是在哪里进行绘制
    painter.setRenderHints(QPainter::Antialiasing);     //抗锯此类型
    painter.setBrush(Qt::yellow);                       //绘制背景颜色
    painter.setPen(Qt::black);                          //绘制边框线的颜色
    painter.drawRect(50,50,200,100);                    //绘制矩形
    painter.drawEllipse(50,50,200,100);                 //绘制椭圆

    /***********绘制文本**********/
//    DrawText();
//    DrawLine();
//    DrawRect();
//    DrawArc();
//    DrawEllipse();
//    DrawPolygon();
//    DrawPixMap();
}

在这里插入图片描述

2. 绘制文本

void Widget::DrawText()
{
    QPainter painter(this);                 //绘图工具 一定要指明在那个类里面进行绘制
    //设置画笔的颜色
    painter.setPen(QColor(110,160,230));
    //设置字体:微软雅黑 字体的大小 50
    QFont font;
    font.setFamily("微软雅黑");             //设置字体的样式是微软雅黑
    font.setPointSize(50);                 //点的大小
    font.setItalic(true);                  //斜贴
    //加载绘制的字体的样式
    painter.setFont(font);
    //绘制字体
     const QRectF rectangle = QRectF(0, 0, 400, 400);
    painter.drawText(rectangle,Qt::AlignCenter,"爱你");
    //painter.drawText(100,100,100,100,0,"QT");
}

在这里插入图片描述

3. 画线

void Widget::DrawLine()    //绘制直线
{
    QPainter painter(this);              //绘图工具,一定要指明在哪个类里面进行绘制
    //设置画笔的颜色
    painter.setPen(Qt::black);
    //设置抗锯齿
    painter.setRenderHint(QPainter::Antialiasing,true);
    //绘制线条
    painter.drawLine(QPointF(0,height()),QPointF(width()/2,height()/2));
}

在这里插入图片描述

4. 绘制矩形

void Widget::DrawRect()         //绘制矩形
{
    QPainter painter(this);
    //设置抗锯齿
    painter.setRenderHint(QPainter::Antialiasing,true);
    //设置边框的颜色 以及边框线的宽度
    painter.setPen(QPen(QColor(110,160,230),5));
    //设置背景颜色
    painter.setBrush(QColor(255,160,90));
    //画矩形
    painter.drawRect(50,250,200,150);
}

在这里插入图片描述

5. 绘制弧线

void Widget::DrawArc()        //绘制弧线
{
    QPainter painter(this);
    //设置一个反走样
    painter.setRenderHint(QPainter::Antialiasing,true);
    //矩形
    QRectF rect(50,450,80,90);
    //起始的角度 狐的角度
    int startAngle = 60 * 36;
    //跨越的度数 弧长
    int spanAngle = 12*63;

    painter.setPen(QPen(QColor(110,160,230),5));
    painter.drawArc(rect,startAngle,spanAngle);
}

在这里插入图片描述

6. 绘制椭圆

void Widget::DrawEllipse()    //绘制椭圆
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setPen(QPen(QColor(110,160,230),5));
    //painter.drawEllipse(QPointF(120,60),50,20);//绘制椭圆
    painter.drawEllipse(120,500,20,50);

    painter.setBrush(QColor(255,160,90));
    //painter.drawEllipse(QPointF(120,180),50,50);//绘制圆
    painter.drawEllipse(120,600,50,50);
}

在这里插入图片描述

7. 绘制多边形

void Widget::DrawPolygon()    //绘制多边形
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setPen(QPen(QColor(110,160,230),2));
    //设置各个点位的坐标
    static const QPointF point[4] = {QPointF(30,40),QPointF(60,150),
                                     QPointF(150,160),QPointF(250,130)};
    //绘制多边形
    painter.drawPolygon(point,4);
}

在这里插入图片描述

8. 显示图片

void Widget::DrawPixMap()
{
    QPixmap pixmap;
    pixmap.load(":/bk.png");
    int width = pixmap.width();//获取图片的宽
    int height = pixmap.height();//获取图片的高
    QPainter painter(this);
    painter.drawPixmap(0,0,400,400,pixmap);
}

本文链接http://www.dzjqx.cn/news/show-617423.html