QT学习(8)——QT绘图学习之绘图设备,QPixmap显示优化,QImage对像素修改,QPicture绘图的记录和重现

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

目录

  • 引出
  • 绘图设备
    • QPixmap使用初体验
      • 修改填充颜色
    • QImage 绘图设备
      • 对像素进行修改
    • QPicture 绘图设备,记录和重现
      • 绘图的重绘
  • 总结
  • 绘图学习
    • 新建一个项目
    • 使用初体验
      • 画笔颜色、宽度设置
      • 画笔类型设置
      • 画刷的使用
      • 代码
    • 高级设置
      • 抗锯齿
      • 画家移动
      • 状态保存和还原
  • 画家画图片
      • 插曲:如何添加图片资源
    • 进行绘图
    • 点击按钮图片右移

引出

QT学习(8)——QT绘图学习之绘图设备,QPixmap显示优化,QImage对像素修改,QPicture绘图的记录和重现


绘图设备

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

QPixmap使用初体验

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#include "widget.h"
#include "ui_widget.h"

#include <QPixmap>
#include <QPainter>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // pixmap绘图设备
    QPixmap pix(300,300);

    // 声明画家
    QPainter painter(&pix);
    painter.setPen(QPen(Qt::green));

    painter.drawEllipse(QPoint(150,150),100,100);

    // 保存
    pix.save("./qtpix.png");
}

Widget::~Widget()
{
    delete ui;
}


修改填充颜色

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    // 修改填充颜色
    pix.fill(Qt::white);

QImage 绘图设备

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    // QImage的使用

    QImage img(300,300,QImage::Format_RGB32);
    img.fill(Qt::gray);

    // 声明画家,画家在 img 中画
    QPainter painter(&img);
    painter.setPen(QPen(Qt::red));

    painter.drawEllipse(QPoint(150,150),100,100);

    // 保存
    img.save("./img.png");

对像素进行修改

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

void Widget::paintEvent(QPaintEvent *){

    QPainter painter(this);

    // 利用QImage 对像素进行修改
    QImage img;
    img.load(":/Image/OtherSceneBg.png");

    // 画之前修改像素点
    for(int i=50;i<100;i++){
        for(int j=50;j<100;j++){
            QRgb value = qRgb(255,0,0);
            img.setPixel(i,j,value);
        }
    }

    painter.drawImage(0,0,img);

}

QPicture 绘图设备,记录和重现

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    // QPicture 绘图设备,可以记录和重现绘图指令
    QPicture pic;
    QPainter painter;

    painter.begin(&pic); // 开始进行画图
    painter.setPen(QPen(Qt::blue));
    painter.drawEllipse(QPoint(150,150),100,100);
    painter.end();       // 画图结束

    // 保存
    pic.save("./pic.wj");

绘图的重绘

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    // 进行重现
    QPainter painter(this);
    QPicture pic;
    pic.load("./pic.wj");

    painter.drawPicture(0,0,pic);

总结

QT学习(8)——QT绘图学习之绘图设备,QPixmap显示优化,QImage对像素修改,QPicture绘图的记录和重现

绘图学习

新建一个项目

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用初体验

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

画笔颜色、宽度设置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

画笔类型设置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

画刷的使用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码

void Widget::paintEvent(QPaintEvent *event){
    // 实例化画家对象
    QPainter painter(this); // this指定的是绘图设备

    // 设置画笔
    QPen pen(QColor(255,0,0));
    pen.setWidth(2);
    pen.setStyle(Qt::DotLine);

    // 让画家使用笔
    painter.setPen(pen);


    // 设置画刷
    QBrush brush(Qt::cyan);
    brush.setStyle(Qt::Dense7Pattern);

    //画家使用画刷
    painter.setBrush(brush);

    // 线
    painter.drawLine(QPoint(0,0),QPoint(100,100));

    // 画一个圆
    painter.drawEllipse(QPoint(100,100),100,50); // 椭圆

    // 画一个矩阵
    painter.drawRect(QRect(20,20,50,50));

    // 画文字
    painter.drawText(QRect(10,200,200,50),"好好学习,天天吃饭");

}

高级设置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

抗锯齿

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    painter.drawEllipse(QPoint(100,100),50,50);
    // 设置抗锯齿能力,效率低
    painter.setRenderHint(QPainter::Antialiasing);
    painter.drawEllipse(QPoint(200,100),50,50);

画家移动

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    painter.drawRect(QRect(20,20,50,50));

    // 移动画家
    painter.translate(100,0);
    painter.drawRect(QRect(20,20,50,50));

状态保存和还原

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    // 高级的设置 ///
    QPainter painter(this); // this指定的是绘图设备
//    painter.drawEllipse(QPoint(100,100),50,50);
//    // 设置抗锯齿能力,效率低
//    painter.setRenderHint(QPainter::Antialiasing);
//    painter.drawEllipse(QPoint(200,100),50,50);

    painter.drawRect(QRect(20,20,50,50));

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

    // 保存画家状态
    painter.save();

    painter.drawRect(QRect(20,20,50,50));

    painter.translate(100,0);

    // 还原画家的保存状态
    painter.restore();

    painter.drawRect(QRect(20,20,50,50));

画家画图片

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

插曲:如何添加图片资源

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

右键,添加新文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

右键,open in Editor

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

进行绘图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点击按钮图片右移

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

int posX = 0; // 横坐标默认是0,每次点击右移

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

绘图的重绘,用update

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

超出屏幕的判断和处理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    // 画家画图片 
    QPainter painter(this); // this指定的是绘图设备
    // 如果超出屏幕,从0开始
    if(posX > this->width()){
        posX = 0;
    }
    painter.drawPixmap(posX,0,QPixmap(":/OtherSceneBg.png"));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/774349.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 22.04.4 LTS 安装 php apache LAMP 环境nginx

1 安装php-fpm apt update apt-get install php-fpm #配置php-fpm服务启动 systemctl enable php8.1-fpm systemctl start php8.1-fpm #查看服务 systemctl status php8.1-fpm #查看版本 rootiZbp1g7fmjea77vsqc5hmmZ:~# php -v PHP 8.1.2-1ubuntu2.18 (cli) (built: J…

蓝牙信标和蓝牙标签我们如何区分,区分方法有哪些?

蓝牙信标和蓝牙标签其实是两种不同的技术&#xff0c;很多人可能会把蓝牙信标和蓝牙标签搞混&#xff0c;因为区分不开来&#xff0c;但实际上&#xff0c;区分这两种技术也很简单&#xff0c;因为它们各自都有不一样的特性&#xff0c;通过这些特性&#xff0c;我们也能正常区…

20.【C语言】初识结构体(重要)

定义&#xff1a;由一批数据组合而成的结构型数据 作用&#xff1a;描述复杂对象&#xff0c;创建新的类型 格式&#xff1a; struct 对象 { …… } 介绍. 用法&#xff1a;结构体变量.成员变量 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> struct hotal…

三、docker配置阿里云镜像仓库并配置docker代理

一、配置阿里云镜像仓库 1. 登录阿里云官网&#xff0c;并登录 https://www.aliyun.com/ 2. 点击产品 - 容器 - 容器与镜像服务ACR - 管理控制台 - 镜像工具 - 镜像加速器 二、配置docker代理 #1. 创建docker相关的systemd文件 mkdir -p /etc/systemd/system/docker.servic…

云服务器在 Web 应用程序中作用

云服务器在Web应用程序中扮演着至关重要的角色&#xff0c;它不仅是现代Web应用程序的基石&#xff0c;还是推动业务发展和提升用户体验的关键技术之一。下面将详细探讨云服务器在Web应用程序中的重要作用及其优势。 首先&#xff0c;云服务器为Web应用程序提供了高度可扩展的…

Linux平台x86_64|aarch64架构如何实现轻量级RTSP服务

技术背景 我们在做Linux平台x86_64架构或aarch64架构的推送模块的时候&#xff0c;有公司提出这样的技术需求&#xff0c;希望在Linux平台&#xff0c;实现轻量级RTSP服务&#xff0c;实现对摄像头或屏幕对外RTSP拉流&#xff0c;同步到大屏上去。 技术实现 废话不多说&…

gen_region_line 生成直线

gen_region_line (Operator) Name 名称 gen_region_line — Store input lines as regions.将输入行存储为region。 生成直线&#xff0c;直线区域 Signature 签名 gen_region_line( : RegionLines : BeginRow, BeginCol, EndRow, EndCol : ) Description 描述 运算符ge…

JavaScript基础知识5(对象)

JavaScript基础知识5&#xff08;对象&#xff09; 对象创建对象使用对象字面量使用 new Object() 访问和修改属性点表示法方括号表示法 动态添加和删除属性添加属性删除属性 对象方法对象的遍历常用属性和方法数学常量数学函数三角函数 使用示例生成随机整数计算圆的面积求最大…

yolov8-seg分割模型TensorRt部署,去掉torch

已完成的yolov8-seg分割模型TensorRt部署 准备下载yolov8-seg模型转化为onnx和trt推理写好的推理接口 准备 https://github.com/songjiahao-wq/yolov8_seg_trtinference.git下载代码 安装TensorRt8.6版本&#xff0c;以及pip install -r requirements.txt 下载yolov8-seg模型…

Kafka系列之Kafka知识超强总结

一、Kafka简介 Kafka是什么 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff08;消息引擎系统&#xff09;&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c; 搜索和其他用户的行动&#xff09;是在现代网络上的许多社…

个人引导页+音乐炫酷播放器(附加源码)

个人引导页音乐炫酷播放器 效果图部分源码完整源码领取下期更新内容 效果图 部分源码 //网站动态标题开始 var OriginTitile document.title, titleTime; document.addEventListener("visibilitychange", function() {if (document.hidden) {document.title "…

为什么英智智能宝能让律师工作事半功倍

大语言模型能够极大提高人们的知识理解能力和知识服务能力&#xff0c;法律服务是典型的知识服务领域&#xff0c;据悉律师有38%的任务都是重复性工作&#xff0c;这些任务有潜力被大模型替代。 但在法律行业中的高度专业且复杂的问题时&#xff0c;通用型大模型的回答虽能提供…

Dungeonborne卡顿怎么办 快速解决Dungeonborne卡顿问题

随着Dungeonborne游戏剧情的深入&#xff0c;玩家将逐渐解锁更多的地图和副本&#xff0c;每个区域都有其独特的生态和敌人。在探索的过程中&#xff0c;玩家不仅可以获得强大的装备和道具&#xff0c;还能结识到志同道合的伙伴&#xff0c;共同面对更强大的敌人。不过也有玩家…

谷粒商城学习笔记-05-项目微服务划分图

文章目录 一&#xff0c;商城业务服务-前端服务二&#xff0c;商城业务服务-后端服务三&#xff0c;存储服务四&#xff0c;第三方服务五&#xff0c;服务治理六&#xff0c;日志七&#xff0c;监控预警系统1&#xff0c;Prometheus2&#xff0c;Grafana3&#xff0c;Prometheu…

奥能电源应邀参加2024年顺丰创π创新大会

企业动态&#xff5c;杭州奥能董事长陈虹先生和常务副总金晖女士受邀出席创π-产业科技创新大会&#xff0c;深入探讨“双碳”目标下的产业转型与技术创新 近日&#xff0c;杭州奥能董事长陈虹先生和常务副总金晖女士应邀出席了在杭州举办的创π-产业科技创新大会。本次大会以产…

嵌入式学习——硬件(UART)——day55

1. UART 1.1 定义 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c;通用异步收发器&#xff09;是一种用于串行通信的硬件设备或模块。它的主要功能是将数据在串行和并行格式之间进行转换。UART通常用于计算机与外围设备或嵌入式系统之间的数据传输。…

Git仓库介绍

1. Github GitHub 本身是一个基于云端的代码托管平台&#xff0c;它提供的是远程服务&#xff0c;而不是一个可以安装在本地局域网的应用程序。因此&#xff0c;GitHub 不可以直接在本地局域网进行安装。 简介&#xff1a;GitHub是最流行的代码托管平台&#xff0c;提供了大量…

【Android源码】Gerrit上传Android源码

关于Gerrit的安装参考下面链接 【Android源码】Gerrit安装 要实现上传Android源码&#xff0c;需要经历以下几步&#xff1a; 下载Android代码创建源码仓库创建manifests仓库上传源码其他电脑下载源码 要证明Gerrit中的源码真实可用&#xff0c;肯定是以其他人能真正共享到代…

C++(第五天----多继承、虚继承、虚函数、虚表)

一、继承对象的内存空间 构造函数调用顺序&#xff0c;先调用父类&#xff0c;再调用子类 #include<iostream>using namespace std;//基类 父类 class Base{ public: //公有权限 类的外部 类的内部 Base(){cout<<"Base()"<<endl;}Base(int …

笔记本电脑升级实战手册[2]:清灰换硅脂

文章目录 前言&#xff1a;一、开盖拆卸二、清灰指南1. 电脑内部清灰2. 风扇清灰3. 清理散热铜管 三、更换硅脂总结&#xff1a; 前言&#xff1a; 这是笔记本电脑升级实战手册的第二篇文章&#xff0c;本篇主要是对电脑进行清灰换硅脂的处理的分享&#xff0c;使用电脑是华硕…