首页 > 编程语言 >Qt5.12实战之图形编程初识

Qt5.12实战之图形编程初识

时间:2023-04-22 19:40:42浏览次数:33  
标签:10 画刷 Qt5.12 编程 pen 初识 绘图 100 Qt


演示效果:

Qt5.12实战之图形编程初识_qt

 1.绘制条件:

1. 绘图设备-> QPainter

2.画笔->QPen  --->字体 (QFont)

3.画刷->QBrush-->自己定义画刷(QPixmap)

4.绘制事件->QPaintEvent

绘图步骤:

1.重写基类的虚函数 

Qt5.12实战之图形编程初识_开发语言_02

void paintEvent(QPaintEvent *event);

 2.在虚函数 void paintEvent(QPaintEvent *event)的实现函数体中进行绘图

Qt5.12实战之图形编程初识_虚函数_03

 将当前窗口做为绘图设备

QPainter p(this);

开始绘图 

p.begin(this);

结束绘图

p.end();

直线绘制: 30为点A的x坐标,230为点A的y坐标 , 350为点B的x坐标,230为点B的y坐标

p.drawLine(30,230,350,230);//画线

Qt5.12实战之图形编程初识_类型转换_04

 绘制矩形:

1.设置画笔为红色 

p.setPen(Qt::red);

2.绘制红色矩形: 10,10为矩形的x,y坐标  ,100,100为矩形的宽与高

p.drawRect(10,10,100,100);

Qt5.12实战之图形编程初识_开发语言_05

 绘制椭圆

设置画笔大小与颜色

p.setPen(QPen(Qt::green,5));

设置画刷 

p.setBrush(QBrush(Qt::yellow,Qt::Dense4Pattern));

使用画笔画椭圆并用画刷填充

p.drawEllipse(130,10,250,200);

 

Qt5.12实战之图形编程初识_类型转换_06

修改画笔样式画圆角矩形

QPen _pen;
    _pen.setStyle(Qt::DashDotLine);
    _pen.setWidth(10);
    _pen.setColor(QColor(255,0,0));
    _pen.setCapStyle(Qt::RoundCap);
    p.setBrush(Qt::NoBrush);
    p.setPen(_pen);
    p.drawRoundRect(300,300,100,100);

 

Qt5.12实战之图形编程初识_类型转换_07

 

创建图片画刷 

QPixmap _pix(QApplication::applicationDirPath() + "/bg.jpg");
    int w = _pix.width();
    int h = _pix.height();
    _pix.scaled(w,h,Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
    QBrush imgBru(_pix);//图片画刷

使用图片画刷画矩形

p.setBrush(imgBru);
    p.drawRect(400,400,w,h);
    p.setBrush(Qt::NoBrush);

Qt5.12实战之图形编程初识_开发语言_08

 文本绘制:

p.setPen(Qt::blue);
    p.setFont(QFont(QStringLiteral("微软雅黑"),36));
    p.drawText(rect(),Qt::AlignCenter,QStringLiteral("入侵吧!"));

Qt5.12实战之图形编程初识_Qt_09

 

绘图附加知识:

颜色类型转换:

QColor c(255,0,255);
    QRgb rgb = qRgb(c.red(),c.green(),c.blue());//qcolor to qrgb

    QColor c1 = QColor(rgb);//qrgb to qcolor

    QString cstr= QString::number(rgb,16);
    QColor c2(cstr.toUInt(NULL,16));//qstring to qcolor

标签:10,画刷,Qt5.12,编程,pen,初识,绘图,100,Qt
From: https://blog.51cto.com/remotedev/6215458

相关文章

  • java -- 网络编程
    软件结构C/S结构:全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构:全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。网络通讯协议网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间......
  • 打卡 c语言趣味编程
     1.百钱百鸡#include <stdio.h>int main(){ int cock, hen, chicken; for (cock = 0; cock <= 20; cock++) { for (hen = 0; hen <= 33; hen++) { for (chicken = 0; chicken <= 100; chicken++) { if ((5 * cock + 3 * hen + chic......
  • 打卡2 c语言趣味编程
    3.抓逃犯#include <stdio.h>#include <math.h>int main(){ int a=0, b=0; //a:前两位,b:后两位 for (a = 0; a < 9; a++) { for (b = 0; b < 9; b++) { int c = a * 1000 + a * 100 + b * 10 + b; if (a != b &&sqrt(c)==(int)sqrt(......
  • 【面试题】4月面经 前端常考JS编程题
     大厂面试题分享面试题库前后端面试题库(面试必备)推荐:★★★★★地址:前端面试题库  web前端面试题库VSjava后端面试题库大全1、柯里化柯里化作用是拆分参数实现的核心思想是 收集参数递归中去判断当前收集的参数和函数的所有入参是否相等,长度一致即可执行函数运算面试题......
  • Go中响应式编程库RxGo详细介绍
    最近的项目用到了RxGo,因为之前从没有接触过,特意去学了学,特此记录下。文章很多内容是复制了参考资料或者官方文档。如果涉及侵权,请联系删除,谢谢。1、RxGo简介1.1基础介绍RxGo是一个基于Go语言的响应式编程库,它提供了一种简单而强大的方式来处理异步事件流和数据流。RxGo的......
  • 实验三 控制语句与组合数据类型应用编程
    importrandomprint('用列表存储随机整数:')lst=[random.randint(0,100)foriinrange(5)]print(lst)print('\n用集合存储随机整数:')s1={random.randint(0,100)foriinrange(5)}print(s1)print('\n用集合存储随机整数:')s2=set()whilelen(s2)......
  • 实验任务3 控制语句与组合数据类型应用编程
    实验任务11importrandom23print('用列表存储随机整数:')4lst=[random.randint(0,100)foriinrange(5)]5print(lst)67print('\n用集合存储随机整数:')8s1={random.randint(0,100)foriinrange(5)}9print(s1)1011print('\n......
  • 实验3 控制语句和组合数据类型应用编程
    一、实验结论:1、实验任务1:task1.py程序源码:1importrandom23print('用列表存储随机整数:')4lst=[random.randint(0,100)foriinrange(5)]5print(lst)67print('\n用集合存储随机整数:')8s1={random.randint(0,100)foriinrange(5)}9pr......
  • Rust编程语言入门之模式匹配
    模式匹配模式模式是Rust中的一种特殊语法,用于匹配复杂和简单类型的结构将模式与匹配表达式和其他构造结合使用,可以更好地控制程序的控制流模式由以下元素(的一些组合)组成:字面值解构的数组、enum、struct和tuple变量通配符占位符想要使用模式,需要将其与某个值进行比......
  • 简单学懂链式编程
    简单学懂链式编程一句话定义链式编程是一种编程风格,它允许在同一个对象上通过多个方法的调用链实现一系列操作,从而简化代码,提高可读性,和代码的可维护性。一个流程看懂创建对象->连续调用对象方法->返回对象本身->使用对象方法获取属性或执行其他操作。示例publicclas......