Qpainter 绘图

1 绘图事件 void paintEvent(QPaintEvent *event)

2 声明一个画家对象 QPainter painter(this) this  指定绘图设备

3 画线 圆 矩形 文字等

4 设置画笔 QPen 设置画笔宽度,风格

5 设置画刷 QBrush 设置画刷 风格

QPainter qPainter(this);//实例化画家对象 this 执向的是绘画设备
//画线
qPainter.drawLine(10,10,100,100); QPen pen(QColor(255,222,0));
qPainter.setPen(pen);
pen.setWidth(3);
QBrush qBrush(Qt::cyan);
qPainter.setBrush(qBrush); qPainter.drawEllipse(QPoint(100,100),50,30);
qPainter.drawRect(QRect(200,200,100,100)); qPainter.drawText(QRect(100,200,100,100),"到店下班了 11");

QPainter 高级设置

1 抗锯齿 效率低 画的更精细  painter2.setRenderHint(QPainter::HighQualityAntialiasing);

2 对画家进行移动。painter2.translate(300,20);

3 保存画家状态。painter2.save();

4 还原画家状态 painter2.restore();

    //高级
QPainter painter2(this);
painter2.drawEllipse(200,20,100,100);
painter2.translate(300,20);
painter2.setRenderHint(QPainter::HighQualityAntialiasing);
painter2.save();
painter2.drawEllipse(200,20,100,100);
painter2.restore();
painter2.drawEllipse(200,20,100,100);

手动调用一下painter 用update

1 利用画家画图片 drawPixmap(posx,300,QPixmap(":/8by.png"));

widget.h

public:
int posx;
protected:
void paintEvent(QPaintEvent *event);

widget.cpp

\#include "widget.h"
#include "ui_widget.h"
#include<QPaintEvent>
#include<QPainter>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this); posx = 20; connect(ui->pushButton,&QPushButton::clicked,[=](){
update();
posx+=20;
}); } Widget::~Widget()
{
delete ui;
} void Widget::paintEvent(QPaintEvent *event)
{
QPainter qPainter(this);//实例化画家对象 this 执向的是绘画设备
//画线
qPainter.drawLine(10,10,100,100); QPen pen(QColor(255,222,0));
qPainter.setPen(pen);
pen.setWidth(3);
QBrush qBrush(Qt::cyan);
qPainter.setBrush(qBrush); qPainter.drawEllipse(QPoint(100,100),50,30);
qPainter.drawRect(QRect(200,200,100,100)); qPainter.drawText(QRect(100,200,100,100),"到店下班了 11"); //高级
QPainter painter2(this);
painter2.drawEllipse(200,20,100,100);
painter2.translate(300,20);
painter2.setRenderHint(QPainter::HighQualityAntialiasing);
painter2.save();
painter2.drawEllipse(200,20,100,100);
painter2.restore();
painter2.drawEllipse(200,20,100,100); ///////画图////////
QPainter painter3(this);
if(posx > this->width()){
posx= 20;
}
painter3.drawPixmap(posx,300,QPixmap(":/8by.png"));
}

QPanter 绘画的更多相关文章

  1. Processing基础之绘画

    图形 //在(x, y)绘制点 point(x, y); //(x1, y1)到(x2, y2)的一条线 line(x1, y1, x2, y2); rect(x, y, weight, height ...

  2. html5 canvas绘画时钟

    本示例使用HTML5 canvas,模拟显示了一个时钟, 请使用支持HTML5的浏览器预览效果: HTML部分: <!DOCTYPE html> <html lang="e ...

  3. Canvas绘画功能(待补充)

    由于项目的前端需要用户手绘输入,所以我们利用Canvas控件做绘画面板,并且实现了许多功能,包括手绘笔画,清空画板,上传手绘图,下载手绘图,记录用户笔画,上传背景图.以后有时间都写到这篇博客中,今天晚 ...

  4. GUI之绘画控制

    一.绘制的动力 GUI的绘画是根据消息动作驱动的 主循环应该是 二.绘制的过程 绘画过程应该是这样的: 首先窗口存在上下层关系-> 在绘制时应该从底部窗口开始绘制,逐一绘制 下面是一些特殊的窗口 ...

  5. 该如何认识ZBrush中的2.5D绘画

    ZBrush不仅对3D行业进行了改革.让艺术家感到无约束自由创作的3D设计,同时它还是一个强大的绘画程序!基于强大的Pixol功能,ZBrush®将数字绘画提升到一个新的层次.如下图所示,插画功能主要 ...

  6. iOS使用Core Graphics和UIBezierPath绘画

    通过UIView的子类的- (void)drawRect:(CGRect)rect 函数可用对视图进行重新绘画: 要重新绘画可以通过Core Graphics和UIBezierPath来实现. 1.通 ...

  7. iOS: 使用CGContextRef,CGPath和UIBezierPath来绘画

    这三种东西:CGContextRef,CGPath和UIBezierPath.本质上都是一样的,都是使用Quartz来绘画.只不过把绘图操作暴露在不同的API层面上,在具体实现上,当然也会有一些细小的 ...

  8. SDL2.0的几何图行绘画

    SDL2.0的几何图形绘画 通过SDL_Window.SDL_Renderer.SDL_Texture三者实现了简单的几何图形绘画. 包括了SDL_RenderDrawPoint.SDL_Render ...

  9. android绘画折线图二

    紧接着android绘画折线图一,下面来介绍第二种方法,使用该方法,首先需要一个Androidplot-core-0.4.3-release.jar,该jar包之后也包含在项目源码中 建立一个andr ...

随机推荐

  1. 『现学现忘』Docker基础 — 38、COPY指令和ADD指令

    目录 1.COPY指令 (1)COPY指令说明 (2)COPY指令格式 (3)COPY指令使用 (4)其他 2.ADD指令 (1)ADD指令说明 (2)ADD指令格式 (3)ADD指令使用 (4)不推 ...

  2. ansible对文件内容操作

    ansible lineinfile 简介 lineinfile该模块是操作文件中的每一行内容,他是按照行为单位的,和下面的replace模块并不冲突. 修改匹配行,如果不存在就会添加 tasks: ...

  3. Android 12(S) 图像显示系统 - HWC HAL 初始化与调用流程

    必读: Android 12(S) 图像显示系统 - 开篇 接口定义 源码位置:/hardware/interfaces/graphics/composer/ 在源码目录下可以看到4个版本的HIDL ...

  4. 全国降雨侵蚀力因子R值

      数据下载链接:百度云下载链接​ 降雨侵蚀力因子其实是反应降雨对土壤侵蚀的潜在能力,就是降雨的冲刷对土壤的侵蚀效应. 在过去几天查阅文献资料的过程中,本人亲眼看见过的关于因子R的计算方法就超过30种 ...

  5. 自己动手实现 HashMap(Python字典),彻底系统的学习哈希表(上篇)——不看血亏!!!

    HashMap(Python字典)设计原理与实现(上篇)--哈希表的原理 在此前的四篇长文当中我们已经实现了我们自己的ArrayList和LinkedList,并且分析了ArrayList和Linke ...

  6. C++20 以 Bazel & Clang 开始

    C++20 如何以 Bazel & Clang 进行构建呢? 本文将介绍: Bazel 构建系统的安装 LLVM 编译系统的安装 Clang is an "LLVM native&q ...

  7. abstract,抽象修饰符

    //abstract 抽象类:类由extends继承继承表现在单继承(接口可以多继承)//abstract--约束~~有人帮我们实现抽象方法,只有方法名字,没有方法实现1.不能靠new这个抽象类,只靠 ...

  8. E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/t

    sudo apt-get remove libappstream3

  9. 【实操填坑】在树莓派上编译 EtherCAT IgH Master 主站程序

    官网下载地址:https://etherlab.org/download/ethercat/  (可list查看文件列表)https://etherlab.org/download/ethercat/ ...

  10. 基于SqlSugar的开发框架循序渐进介绍(13)-- 基于ElementPlus的上传组件进行封装,便于项目使用

    在我们实际项目开发过程中,往往需要根据实际情况,对组件进行封装,以更简便的在界面代码中使用,在实际的前端应用中,适当的组件封装,可以减少很多重复的界面代码,并且能够非常简便的使用,本篇随笔介绍基于El ...