【Qt 基础】绘图

server/2024/12/23 9:12:34/

画笔

QPen pen;
pen.setWidth(3); // 线条宽度
pen.setColor(Qt::red);// 画笔颜色
pen.setStyle(Qt::DashLine);// 线条样式
pen.setCapStyle(Qt::RoundCap);// 线端样式
pen.setJoinStyle(Qt::BevelJoin);// 连接样式
painter.setPen(pen);

线条
在这里插入图片描述

线端

在这里插入图片描述

连接

在这里插入图片描述

画刷

    QBrush brush;brush.setColor(Qt::yellow);// 颜色brush.setStyle(Qt::SolidPattern);// 样式brush.setTexture(QPixmap &pixmap);// 设置画刷图片

在这里插入图片描述

渐变

     QRadialGradient rg(W/2,H/2,qMax(W/8,H/8),W/2,H/2);rg.setColorAt(0,Qt::green);rg.setColorAt(1,Qt::blue);rg.setSpread(QGradient::ReflectSpread);
QLinearGradient
QRadialGradient
QConicalGradient

在这里插入图片描述

渐变模式

PadSpread
RepeatSpread
ReflectSpread

在这里插入图片描述

画家

可以画不同的基本图形元件

更复杂的图形用QPainterPath

对画家的操作

painter.rotate(15);//旋转
painter.translate(20,20);//平移
painter.scale(0.5,0.5);//坐标缩放
painter.shear(0.5,0.5);//扭转变换painter.save();
painter.rotate(15);//旋转
painter.restore();
painter.drawRect(rect);

视口和窗口

物理设备提供最基本的坐标系,

通过各种变换得到逻辑坐标系,

为了更方便的操作,出现了视口坐标系和窗口坐标系,

视口表示绘图设备的任意一个矩形区域的物理坐标,默认情况下为整个绘图设备区域。

窗口与视口是同一个矩形,可以重新定义矩形区域的逻辑坐标。

视口设置为painter.setViewport(50,0,200,200),即物理设备的(50,0)为左上角,绘制一个200的正方形,改形状为视口。但坐标系与物理坐标系一致。

然后使用painter.setViewport(-50,-50,100,100)这里定义(50,0)(-50,-50)且对长宽做了缩放,这里是缩小了,缩小到(100,100),以后的操作都是在100$\times$100的空间进行。
在这里插入图片描述

    QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);painter.setRenderHint(QPainter::TextAntialiasing);int W = this->width();int H  = this->height();qDebug()<<W<<" "<< H;int side = qMin(W,H);QRect rect((W-side)/2,(H-side)/2,side,side);painter.drawRect(rect);painter.setViewport(rect);painter.setWindow(-100,-100,200,200);QPen pen;pen.setWidth(2);pen.setColor(Qt::red);pen.setStyle(Qt::SolidLine);painter.setPen(pen);QLinearGradient linearGrad(0,0,100,0);linearGrad.setColorAt(0,Qt::yellow);linearGrad.setColorAt(1,Qt::green);linearGrad.setSpread(QGradient::PadSpread);painter.setBrush(linearGrad);//painter.setCompositionMode(QPainter::RasterOp_NotSourceXorDestination);painter.setCompositionMode(QPainter::CompositionMode_Difference);for(int i = 0; i < 36; i++){painter.drawEllipse(QPoint(50,0),50,50);painter.rotate(10);}

运行结果
在这里插入图片描述


http://www.ppmy.cn/server/61071.html

相关文章

在一个使用了 Sass 的 React Webpack 项目中安装和使用 Tailwind CSS

要在一个使用了 Sass 的 React Webpack 项目中安装和使用 Tailwind CSS&#xff0c;可以按照以下步骤操作&#xff1a; 1. 安装 Tailwind CSS 及其依赖 首先&#xff0c;确保你的项目根目录下有 package.json 文件&#xff0c;然后运行以下命令来安装 Tailwind CSS 及其所需的…

torch之从.datasets.CIFAR10解压出训练与测试图片 (附带网盘链接)

前言 从官网上下载的是长这个样子的 想看图片&#xff0c;咋办咧&#xff0c;看下面代码 import torch import torchvision import numpy as np import os import cv2 batch_size 50transform_predict torchvision.transforms.Compose([torchvision.transforms.ToTensor(),…

认知偏差知识手册

The Connector 每周会选取我从信息流里获取的有价值内容&#xff0c;包括 AI 探索专题、Github 开源库推荐、工具介绍和一些文章书籍等&#xff0c;目标是链接互联网上的优质内容&#xff0c;获得更多的灵感和知识&#xff0c;从而激发彼此的创造力。 AI 探索 主流推理框架在…

搜索引擎算法工程师,在query理解方面,都有哪些方面的工作

一、什么是query理解&#xff1f; 通俗来讲&#xff0c;就是query整形。又可以理解为是一个转接头&#xff0c;把用户送来过来的奇奇怪怪的query&#xff08;或者说是在搜索引擎看来是奇奇怪怪的query&#xff09;转换为搜索引擎最想看到的query的。 在LLM当前能力的帮助下&a…

03-Charles实战

一、抓包分析问题示例 1&#xff09;问题描述 2&#xff09;抓包分析 这是后台响应回来的错误信息&#xff0c;说明问题一是后台的原因&#xff1b;但是后台只响应了一条信息&#xff0c;而前端页面却显示两条错误信息&#xff0c;说明前端页面处理异常的时候逻辑有问题&#…

SpringBoot开发的AI导航站技术架构剖析 —— 技术如何选型 - 第520篇

历史文章&#xff08;文章累计520&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…

华为 NAT 技术介绍及配置

网络地址转换是一种将内部私有IP地址转换为公共IP地址的技术&#xff0c;广泛用于解决IPv4地址短缺问题&#xff0c;提高网络的安全性和灵活性。华为设备支持多种NAT技术&#xff0c;包括静态NAT、动态NAT和NAPT&#xff08;端口地址转换&#xff09;。以下将详细介绍每种技术及…

Python爬虫入门篇学习记录

免责声明 本文的爬虫知识仅用于合法和合理的数据收集&#xff0c;使用者需遵守相关法律法规及目标网站的爬取规则&#xff0c;尊重数据隐私&#xff0c;合理设置访问频率&#xff0c;不得用于非法目的或侵犯他人权益。因使用网络爬虫产生的任何法律纠纷或损失&#xff0c;由使用…