0
点赞
收藏
分享

微信扫一扫

Qt 绘图事件

钵仔糕的波波仔 2022-03-19 阅读 70
qtc++ui

文章目录

1、基础使用

void Widget::paintEvent(QPaintEvent *event)
{
    // 创建画家
    QPainter painter(this);
    // 设置画笔
    QPen pen(QColor(255,0,0));

    // 设置画笔款宽度
    pen.setWidth(10);
    pen.setStyle(Qt::DotLine);  // 点点
    painter.setPen(pen);

    // 设置抗锯齿能力 效率比较低
    painter.setRenderHint(QPainter::Antialiasing);
    // 保存当前状态
    painter.save();

    // 移动画家
    // painter.translate(100,0);

    // 取出画家
    painter.restore();
    // 画刷,封闭的图案填充颜色的
    QBrush brush(Qt::green);
    brush.setStyle(Qt::Dense4Pattern);
    painter.setBrush(brush);

    // 画线
    painter.drawLine(QPoint(0,0),QPoint(100,100));
    // 圆心,rx,ry
    painter.drawEllipse(QPoint(100,100),50,50);

    // 画矩形从x,y 20 20 画一个50宽高的矩形
    painter.drawRect(QRect(200,200,50,50));
    // 写字
    painter.drawText(QRect(300,300,100,100),"hello world");


    // 画图片
    painter.drawPixmap(300,300,QPixmap("D:\\Qt_project_5.9.6\\Testenvent\\1.png"));


}

2、QImage使用

    QImage img;
    img.load("D:\\Qt_project_5.9.6\\Testenvent\\1.png");
    QPainter painter(this);
    // 修改像素
    for(int i=100;i<150;i++)
    {
        for(int j=100;j<150;j++)
        {
            QRgb value = qRgb(255,0,0);
            img.setPixel(i,j,value);
        }
    }

    painter.setPen(QPen(Qt::green));
    //painter.drawEllipse(QPoint(0,0),100,100);
    painter.drawImage(0,0,img);

3、QPixmap

    QPixmap pix;
    pix.load("D:\\Qt_project_5.9.6\\Testenvent\\1.png");
    QPainter painter(this);
    painter.setPen(QPen(Qt::green));
    painter.drawPixmap(0,0,pix);

4、QPicture

先将绘制的图形保存到文件中


      QPicture pic;
      QPainter painter;
      painter.begin(&pic);
      painter.setPen(Qt::green);
      painter.drawEllipse(200,200,50,50);
      painter.end();
      pic.save("./pic.zt");

然后将其重现

    QPicture pic;
    pic.load("./pic.zt");
    QPainter painter(this);
    painter.drawPicture(QPoint(20,20),pic);
举报

相关推荐

0 条评论