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. 使用 content-visibility 优化渲染性能

    最近在业务中实际使用 content-visibility 进了一些渲染性能的优化. 这是一个比较新且有强大功能的属性.本文将带领大家深入理解一番. 何为 content-visibility? co ...

  2. 为什么要写blog????

    写 blog 文章,是种与自我的对话,也是种与外界的联系,也是获得 level up 或 skill learned 的契机. 借口:我不太会写文章,不太会表达,没有东西好写,没人会看我的文章 你想让 ...

  3. C语言学习之我见-strncmp()字符串比较函数(控制范围)

    strncmp()函数,用于范围内,两个字符串的比较,n表示最大比较范围. (1)函数原型 int strncmp(const char *_Str1,const char *_Str2,size_t ...

  4. 【由浅入深_打牢基础】HOST头攻击

    [由浅入深_打牢基础]HOST头攻击 前几天一直准备别的事情,然后用了2/3天时间去挖了补天某厂的SRC,还是太菜了,最后提交了一个低危(还没出结果,还有点敏感信息泄露,感觉略鸡肋也没交),不过偶然发 ...

  5. 浪姐打分看不够?用几行Python代码模拟评委打分

    大家好鸭~我是小熊猫比赛大家都看过吧,每次是不是都对比赛成绩充满期待.特别是浪姐的打分看的简直欲罢不能- 今天就用Python来模拟评委打分,这个案例很短也很简单,很适合新手跟小白练习. 在某次十佳歌 ...

  6. Python基础教程:模块重载的五种方法

    环境准备 新建一个 foo 文件夹,其下包含一个 bar.py 文件 $ tree foo foo └── bar.py 0 directories, 1 file bar.py 的内容非常简单,只写 ...

  7. 在docker中打开redis 客户端 cli

    首先交互方式进入redis容器 docker exec -it redis /bin/bash 随后运行客户端 redis-cli

  8. maven编译 出现Process terminated

    问题: 解决方案: 在Settings中配置一下maven

  9. FileNameFilter过滤器的使用和Lambda优化程序--IO概述(概念&分类)

    FileNameFilter过滤器的使用和Lambda优化程序 public class Demo02Filter { public static void main(String[] args) { ...

  10. Etcd 使用场景:通过分布式锁思路实现自动选主

    分布式锁?选主? 分布式锁可以保证当有多台实例同时竞争一把锁时,只有一个人会成功,其他的都是失败.诸如共享资源修改.幂等.频控等场景都可以通过分布式锁来实现. 还有一种场景,也可以通过分布式锁来实现, ...