【Qt 基础】绘图

news2024/9/22 4:15:12

画笔

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.coloradmin.cn/o/1925392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css设置弹性flex后,如果设置100vh高度不撑满的原因

问题 父元素设置height为100%&#xff0c;有两个子元素&#xff0c;第一个设置height:100vh&#xff0c;第二个设置flex:1&#xff0c;此时第一个高度无法撑满盒子 原因解决方式 当父元素设置display为flex,第一个div设置高度64px,剩一个div设置高度为flex&#xff1a;1,这时…

数据处理-Matplotlib 绘图展示

文章目录 1. Matplotlib 简介2. 安装3. Matplotlib Pyplot4. 绘制图表1. 折线图2. 散点图3. 柱状图4. 饼图5. 直方图 5. 中文显示 1. Matplotlib 简介 Matplotlib 是 Python 的绘图库&#xff0c;它能让使用者很轻松地将数据图形化&#xff0c;并且提供多样化的输出格式。 Ma…

Qt项目中添加自定义文件夹,进行整理归类

Qt项目中添加文件夹进行归类 1、在windows的工程目录下创建一个文件夹&#xff0c;如widgets 2、将.h 、.cpp、.ui文件拷贝到windows该文件夹widgets 3、在qt工程中&#xff0c;根目录右键&#xff0c;选择添加现有文件&#xff0c;批量选择 .h 、.cpp、.ui文件之后&#xf…

初识影刀:EXCEL根据部门筛选低值易耗品

第一次知道这个办公自动化的软件还是在招聘网站上&#xff0c;了解之后发现对于办公中重复性的工作还是挺有帮助的&#xff0c;特别是那些操作非EXCEL的重复性工作&#xff0c;当然用在EXCEL上更加方便&#xff0c;有些操作比写VBA便捷。 下面就是一个了解基本操作后&#xff…

开发总结 - H5/web C端评论区开发逻辑

1. 背景 平时做的系统都是偏公司业务的系统&#xff0c;这次开发了一个用户评论的功能&#xff0c;同时开发了web版和H5版本的&#xff0c;因为没有做过这种C端的常用的功能&#xff0c;所以记录一下此次的开发&#xff0c;从参考友商设计到独立思考业务之间的区别再到实际开发…

everything搜索不到任何文件-设置

版本&#xff1a; V1.4.1.1024 (x64) 问题&#xff1a;搜索不到任何文件 click:[工具]->[选项]->下图所示 将本地磁盘都选中包含

2024 辽宁省大学数学建模竞赛B 题 钢铁产品质量优化完整思路 代码 结果分享(仅供学习)

冷轧带钢是钢铁企业的高附加值产品,其产品质量稳定性对于钢铁企业的经济效益具有非常重要的影响。在实际生产中&#xff0c;冷连轧之后的带钢需要经过连续退火处理来消除因冷轧产生的内应力并提高其机械性能。连续退火的工艺流程如图1 所示&#xff0c;一般包括加热、保温、缓冷…

Datawhale AI 夏令营 Task1

记录第一次参加Kaggle上的比赛&#xff0c;通过一站式的教程&#xff0c;没有一点阻碍的跑通了baseline 夏令营方向的选择 我选择的夏令营是关于CV方向的&#xff0c;因为本身对于cv方向比较感兴趣&#xff0c;而且这次夏令营的方式我很喜欢&#xff0c;通过比赛来促进学习&a…

板级调试小助手(5)基于Python访问千帆大模型

一、前言 千帆大模型是百度提供的可以使用API接口调用GPT模型&#xff0c;使用Python调用其实是很简单的&#xff1a;去千帆大模型申请账号->使用python调用API即可&#xff0c;具体可以参考这位大佬的博客&#xff0c;这里就不赘述了。 【教程】如何用Python调用百度的千帆…

基于Java+SpringMvc+Vue技术的药品进销存仓库管理系统设计与实现系统(源码+LW+部署讲解)

注&#xff1a;每个学校每个老师对论文的格式要求不一样&#xff0c;故本论文只供参考&#xff0c;本论文页数达到60页以上&#xff0c;字数在6000及以上。 基于JavaSpringMvcVue技术的在线学习交流平台设计与实现 目录 第一章 绪论 1.1 研究背景 1.2 研究现状 1.3 研究内容…

数据结构和算法(0-1)----递归

定义​ 递归是一种在程序设计中常用的技术&#xff0c;它允许一个函数调用自身来解决问题。递归通常用于解决那些可以被分解为相似的子问题的问题&#xff0c;这些问题的解决方式具有自相似性。在数据结构和算法中&#xff0c;递归是一种重要的解决问题的方法&#xff0c;尤其是…

项目范围管理-系统架构师(二十九)

1、&#xff08;重点&#xff09;软件设计包括了四个独立又相互联系的活动&#xff0c;高质量的&#xff08;&#xff09;将改善程序结构的模块划分&#xff0c;降低过程复杂度。 A程序设计 B数据设计 C算法设计 D过程设计 解析&#xff1a; 软件设计包含四个&#xff0c;…

Golang | Leetcode Golang题解之第232题用栈实现队列

题目&#xff1a; 题解&#xff1a; type MyQueue struct {inStack, outStack []int }func Constructor() MyQueue {return MyQueue{} }func (q *MyQueue) Push(x int) {q.inStack append(q.inStack, x) }func (q *MyQueue) in2out() {for len(q.inStack) > 0 {q.outStack…

Linux权限相关

目录 Linux中的用户 Linux权限管理 Linux的文件访问者分类 Linux的文件类型和访问权限 文件类型 文件权限 文件权限的修改 文件所有者修改 文件所有者所在组修改 目录权限 粘滞位 文件掩码 在Linux中&#xff0c;权限包括用户的权限和文件的权限 Linux中的用户 在…

Android 儿童绘本/汉语拼音实现

有这样一个项目&#xff0c;开发一个电子绘本&#xff0c;需要在绘本上显示&#xff0c;汉语拼音。 界面布局 <androidx.core.widget.NestedScrollViewandroid:layout_width"match_parent"android:layout_height"match_parent"android:fillViewport&quo…

路径规划 | 飞蛾扑火算法求解二维栅格路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 路径规划 | 飞蛾扑火算法求解二维栅格路径规划&#xff08;Matlab&#xff09;。 飞蛾扑火算法&#xff08;Firefly Algorithm&#xff09;是一种基于自然界萤火虫行为的优化算法&#xff0c;在路径规划问题中也可以应…

C++·多态

1. 多态的概念 多态通俗讲就是多种形态&#xff0c;就是指去完成某个行为&#xff0c;当不同对象去做时会产生不同的结果或状态。 比如买火车票这个行为&#xff0c;同样是买票的行为&#xff0c;普通成年人买到全价票&#xff0c;学生买到半价票&#xff0c;军人优先买票。这个…

Qt MV架构-视图类

一、基本概念 在MV架构中&#xff0c;视图包含了模型中的数据项&#xff0c;并将它们呈现给用户。数据项的表示方法&#xff0c;可能和数据项在存储时用的数据结构完全不同。 这种内容与表现分离之所以能够实现&#xff0c;是因为使用了 QAbstractItemModel提供的一个标准模…

Go语言---TCP服务端以及客服端的实现

TCP的C/S架构 TCP服务器的实现 监听的底层实现 func Listen(network, address string) (Listener, error) {var lc ListenConfigreturn lc.Listen(context.Background(), network, address) }type Listener interface {// Accept waits for and returns the next connection …

Jenkins中Node节点与构建任务

目录 节点在 Jenkins 中的主要作用 1. 分布式构建 分布式处理 负载均衡 2. 提供不同的运行环境 多平台支持 特殊环境需求 3. 提高资源利用率 动态资源管理 云端集成 4. 提供隔离和安全性 任务隔离 权限控制 5. 提高可扩展性 横向扩展 高可用性 Jenkins 主服务…