QPainter 基础绘图
调用QPainter的接口来绘制一些基本的图形
头文件:
#include <QMainWindow>
#include <QPainter> namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = );
~MainWindow(); private:
void paintEvent(QPaintEvent *event); private:
Ui::MainWindow *ui;
int m_type;
};
源文件:
#include <QRegExp>
#include <QPixmap>
#include "mainwindow.h"
#include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
m_type()
{
ui->setupUi(this);
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
QPainter painter(this); if(m_type == ) // 绘制文本
{
painter.setPen(Qt::blue);
QFont font;
font.setFamily("Microsoft YaHei");
font.setPointSize();
font.setItalic(true);
font.setBold(true);
painter.setFont(font);
painter.drawText(rect(), Qt::AlignCenter, QString::fromLocal8Bit("Qt"));
}
else if(m_type == ) // 绘制直线
{
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(Qt::blue);
painter.drawLine(QPointF(, height()), QPointF(width() / , height() / ));
}
else if(m_type == ) // 绘制矩形
{
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::blue, ));
painter.setBrush(Qt::green);
painter.drawRect(, , , );
}
else if(m_type == ) // 绘制弧线
{
QRectF rect(90.0, 90.0, 80.0, 90.0);
int startAngle = * ;
int spanAngle = * ;
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::blue, ));
painter.drawArc(rect, startAngle, spanAngle); }
else if(m_type == ) // 绘制椭圆,绘制圆
{
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::blue, ));
painter.drawEllipse(QPointF(, ), , );
painter.setBrush(Qt::green);
painter.drawEllipse(QPointF(, ), , );
}
else if(m_type == ) // 绘制多边形
{
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(Qt::blue);
static const QPointF points[] = {QPointF(, ), QPointF(, ), QPointF(, ), QPointF(, ), QPointF(, ), QPointF(, )};
painter.drawPolygon(points, );
}
else if(m_type == ) // 绘制图片
{
painter.setRenderHint(QPainter::Antialiasing, true);
painter.drawPixmap(rect(), QPixmap(":/images/pic.png"));
}
else if(m_type == ) // 绘制圆角矩形
{
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::blue,,Qt::SolidLine));
painter.drawRoundRect(,,,,,);
}
else if(m_type == ) // 绘制扇形
{
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::green,,Qt::SolidLine));
painter.drawPie(,,,,,);
}
else if(m_type == ) // 绘制弦
{
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::green,,Qt::SolidLine));
painter.drawChord(,,,,,);
}
}
QPainter 基础绘图的更多相关文章
- QCustomPlot开发笔记(一):QCustomPlot简介、下载以及基础绘图
前言 QCustomPlot开发笔记系列整理集合,这是目前使用最为广泛的Qt图表类(Qt的QWidget代码方向只有QtCharts,Qwt,QCustomPlot),使用多年,系统性的整理,过目 ...
- VB6 GDI+ 入门教程[5] 基础绘图小结
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[5] 基础绘图小结 2009 年 6 月 18 日 4条 ...
- 数据分析与展示——Matplotlib基础绘图函数示例
Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...
- R基础绘图
本节内容 0:小知识 1:绘图系统散点图的特征 2:基础绘图函数 3:基础绘图参数 4:图形设备 5:案例操作5个图形 0:小知识 summary() ## 对数据框或者向量进行描述性数据 read. ...
- SVG基础绘图实例
SVG可缩放矢量图(Scalable Vector Graphics),是使用 XML 来描述二维图形和绘图程序的语言,图像在放大或改变尺寸的情况下其图形质量不会有所损失,是万维网联盟的标准. 下面整 ...
- R 基础绘图体系-基础篇
1.高水平绘图函数 生成数据 #模拟100位同学学号及三科成绩 num = seq(12340001,12340100) # 形成学号 x1 = round(runif(100,min = 80,ma ...
- QPainter. QpaintDevice 绘图设备
QPaintDevice 绘图设备 1 QPixmap QImage Qbitmap(黑白色) QPicture QWidget 2 QPixmap 对不同平台做了显示优化 fill(填充颜色) Q ...
- java基础 绘图技术.坦克大战 之java绘图坐标体系(一)
坐标体系介绍 下图说明了java坐标体系.坐标原点位于左上角,以像素为单位,像素是计算机屏幕上最小的显示单位.在java的坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素:第二个 ...
- R语言基础绘图
一.可以通过代码或者图形用户界面保存图形,绘图语句夹在开启目标图形设备语句和关闭图形设备的语句之间: pdf("filename.pdf") png("filename. ...
随机推荐
- 大神教你零基础学PS,30堂课从入门到精通
ps视频教程,ps自学视频教程.ps免费视频教程下载,大神教你零基础学PS教程视频内容较大,分为俩部分: 大神教你零基础学PS--30堂课从入门到精通第一部分:百度网盘,https://pan.bai ...
- 宏基4752g 开机进度条卡到75%左右,解决办法
起因:更新win10推送的更新补丁,失败自动回退.开机进度条只能走到75%,bios进不去,最后就卡在开机的logo.(还有其他人是win7直接升级win10,也出现了这种情况.)解决办法:重刷bio ...
- Genymotion模拟器安装问题及解决(启动失败,模拟器不能联网)
安装Genymotion模拟器安装后启动不了,报错: 百度的解决方法是打开VMVBirtualox选中自己的设备点击设置—常规—将版本设置为图中箭头所指的: 但是我这样做的时候发现我的下拉列表中没有6 ...
- java学习(三)类、实例
类 public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sle ...
- Python字符串符号:双引号/单引号用法注解。
众所周知python中单引号和双引号常常被我们所使用,例如print.input等等. 但是对于打印输出所引导的字符串大多都是用双引号的形式来做,"Hello,python!",而 ...
- alibaba/Sentinel 分布式 系统流量防卫兵
Sentinel: 分布式系统的流量防卫兵 Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多 ...
- 环境变量的配置-java-JMETER - 【Linux】
rz上传 lz下载 步骤: . Linux下首先安装Jdk: . 下载apache-jmeter-4.0.tgz,复制到Linux系统中的/opt目录下: . 解压apache-jmeter-4.0. ...
- Linux常用压缩解压命令
tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...
- Leetcode_3. Find the longest substring without repeating characters
3. Find the longest substring without repeating characters Given a string, find the length of the lo ...
- 使用cors解决跨域遇到浏览器发出options嗅探
前言: 本地开发起的服务器,通过修改hosts文件设置域名映射到本地,接口在测试环境 1. 服务器端设置cors, 配置access-control-allow-origin 头部 使用蚂蚁金服的up ...