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. ...
随机推荐
- Nginx应用场景
1. Nginx应用场景 1)http服务器.Nginx可以独立的提供http服务,可以做网页静态服务器(也就是将静态文件放到nginx目录下,通过nginx来访问就ok) 2)虚拟主机,可以在一 ...
- jmeter功能按钮介绍
Jmeter本来是做性能测试的,所以有很多监听器都是针对性能的,随后边的不断发展,可以应用到接口自动化等测试工作上. 面板的文件菜单中一般都是打开.保存.新建测试的,如下图: 保存时可以直接ctrl+ ...
- 网页从url到网页展示到页面的流程
心血来潮整理的 https://mubu.com/doc/oLDc49lx39
- CHAPTER 40 Science in Our Digital Age 第40章 我们数字时代的科学
CHAPTER 40 Science in Our Digital Age 第40章 我们数字时代的科学 The next time you switch on your computer, you ...
- windows离线补丁包下载路径-云盾安骑士
我们有一台阿里云服务器,只有内网可以访问,无外网资源. 阿里云账户邮箱反复收到阿里云云盾的漏洞报警通知,推荐安装安骑士组件. 安骑士组件是收费服务.阿里云服务器,无法连上外网,无法自动安装补丁.需要将 ...
- Spark计算模型RDD
RDD弹性分布式数据集 RDD概述 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行 ...
- 《The Mythical Man-Month(人月神话)》读后感(1)
临近考试周,这里我通过平时阅读的<人月神话>十九个章节和知乎.简书等网页中网友们对<人月神话>的读后感,对书中各个章节进行简单的总结,以下均为个人手打观点的思考与整合,仅供大家 ...
- Django缓存配置和使用
- 缓存 - 配置 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCAT ...
- kafka handler
1.配置kafka 参数文件 在ogg主目录下有示例文件: [root@WH0PRDBRP00AP0013 ogg]# cd AdapterExamples/big-data/kafka/ [root ...
- max number of clients reached Redis测试环境报错
现象:测试服务是去redis循环取数据,早上发现服务挂了,手动登陆redis 无法输入命令,报错:max number of clients reached Redis