QPanter 绘画
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 绘画的更多相关文章
- Processing基础之绘画
图形 //在(x, y)绘制点 point(x, y); //(x1, y1)到(x2, y2)的一条线 line(x1, y1, x2, y2); rect(x, y, weight, height ...
- html5 canvas绘画时钟
本示例使用HTML5 canvas,模拟显示了一个时钟, 请使用支持HTML5的浏览器预览效果: HTML部分: <!DOCTYPE html> <html lang="e ...
- Canvas绘画功能(待补充)
由于项目的前端需要用户手绘输入,所以我们利用Canvas控件做绘画面板,并且实现了许多功能,包括手绘笔画,清空画板,上传手绘图,下载手绘图,记录用户笔画,上传背景图.以后有时间都写到这篇博客中,今天晚 ...
- GUI之绘画控制
一.绘制的动力 GUI的绘画是根据消息动作驱动的 主循环应该是 二.绘制的过程 绘画过程应该是这样的: 首先窗口存在上下层关系-> 在绘制时应该从底部窗口开始绘制,逐一绘制 下面是一些特殊的窗口 ...
- 该如何认识ZBrush中的2.5D绘画
ZBrush不仅对3D行业进行了改革.让艺术家感到无约束自由创作的3D设计,同时它还是一个强大的绘画程序!基于强大的Pixol功能,ZBrush®将数字绘画提升到一个新的层次.如下图所示,插画功能主要 ...
- iOS使用Core Graphics和UIBezierPath绘画
通过UIView的子类的- (void)drawRect:(CGRect)rect 函数可用对视图进行重新绘画: 要重新绘画可以通过Core Graphics和UIBezierPath来实现. 1.通 ...
- iOS: 使用CGContextRef,CGPath和UIBezierPath来绘画
这三种东西:CGContextRef,CGPath和UIBezierPath.本质上都是一样的,都是使用Quartz来绘画.只不过把绘图操作暴露在不同的API层面上,在具体实现上,当然也会有一些细小的 ...
- SDL2.0的几何图行绘画
SDL2.0的几何图形绘画 通过SDL_Window.SDL_Renderer.SDL_Texture三者实现了简单的几何图形绘画. 包括了SDL_RenderDrawPoint.SDL_Render ...
- android绘画折线图二
紧接着android绘画折线图一,下面来介绍第二种方法,使用该方法,首先需要一个Androidplot-core-0.4.3-release.jar,该jar包之后也包含在项目源码中 建立一个andr ...
随机推荐
- IIS版本与Windows Server版本对应关系
IIS 6.0随着Windows XP Professional 64位和Windows Server 2003发布. IIS 7.0随着Windows Vista和Windows Server 20 ...
- TypeScript 泛型(generic) 入门介绍
TypeScript 泛型函数 下面来创建第一个使用泛型的例子:identity函数.这个函数会返回任何传入它的值.你可以把这个函数当成是echo命令.不用泛型的话,这个函数可能是下面这样: func ...
- 重学ES系列之变量的作用范围
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- centos通过日志查入侵
1. Linux查看/var/log/wtmp文件查看可疑IP登陆 last -f /var/log/wtmp 该日志文件永久记录每个用户登录.注销及系统的启动.停机的事件.因此随着系统正常运行时间的 ...
- 一文看完vue3的变化之处
在通读了vue的官网文档后,我记录下了如下这些相对于2.x的变化之处. 1.创建应用实例的变化 之前一般是这样: let app = new Vue({ // ...一些选项 template: '' ...
- maven编译 出现Process terminated
问题: 解决方案: 在Settings中配置一下maven
- 从UI Designer上面动态创建下拉列表
在UI Desigher上创建一个新的列表 并创建2个值,code 和value 添加一个EventHandler 在EventHandler上面添加一个Operation 类型为script$dat ...
- Linux操作系统(2):组管理和权限管理
组管理和权限管理 Outline 1.查看文件所有者:ls -ahl 2.更改文件或目录权限命令:chmod 3.更改文件或目录所有者命令:chown 4.更改文件或目录所属组命令:chgrp 1)组 ...
- 使用Docker搭建自己的Bitwarden密码管理服务
相信身为开发者,总会在各种网站中注册账号,为了方面记忆可以使用同一套账号密码进行注册,自从前段时间学习通时间撞库后有些人已经开始疯狂改密码了,可是密码一多就很难记忆,最好找个地方存储账户信息 我曾经使 ...
- android studio取消设置代理
看标题感觉就是一个简单的设置,其实只是个大坑啊 https://www.jianshu.com/p/bb6d2bcdd5b5 android studio内虽然设置了 no proxy,但是没起作用, ...