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. ...
随机推荐
- 宏基4752g 开机进度条卡到75%左右,解决办法
起因:更新win10推送的更新补丁,失败自动回退.开机进度条只能走到75%,bios进不去,最后就卡在开机的logo.(还有其他人是win7直接升级win10,也出现了这种情况.)解决办法:重刷bio ...
- 使用electron开发一个h5的客户端应用创建http服务模拟后台接口mock
使用electron开发一个h5的客户端应用创建http服务模拟后端接口mock 在上一篇<electron快速开始>里讲述了如何快速的开始一个electron的应用程序,既然electr ...
- First Day!
刚申请博客第一天,多多关照! 小弟,给各位大佬递茶! 出现什么错误, 还请明确指出! 现在, 正在找工作, 如果有老哥, 公司缺人, 何不让老弟我去试试! 不入前端, 不知水深. 一入前端, 如入泥潭 ...
- appium 元素定位工具
两种元素定位工具: 1.uiautomatorviewer是android-sdk自带的一个元素定位工具,目录D:\androidsdk\androidsdk\tools\bin . 双击启动uiau ...
- Datawhale MySQL 训练营 Task2 查询语句
目录 MySQL 管理 MySQL 用户管理 参考 数据库管理 SQ查询语句 1. 导入示例数据库,教程 MySQL导入示例数据库 2. 查询语句 SELECT 3. 筛选语句 WHERE ,过滤 4 ...
- Hyperledger Fabric 账本结构解析
前言 现在很多人都在从事区块链方面的研究,作者也一直在基于Hyperledger Fabric做一些开发工作.为了方便后来人更快的入门,本着“开源”的精神,在本文中向大家讲解一下Hyperledger ...
- 某简单易懂的人脸识别 API 的开发环境搭建和简易教程
最近接了个人脸识别相关的项目,是基于某个非常简单易懂的人脸识别 API:face_recognition 做的.这个库接口非常傻瓜,很适合新手上手,而且可以研究其源码来学习 dlib 这个拥有更加灵活 ...
- MyBatis思维导图
1.初识框架技术 2.搭建MyBatis环境 3.掌握MyBatis的核心API 4.掌握MyBatis的核心配置文件:主要用于配置数据库连接和MyBatis运行时所需的各种特性 5.掌握SQL映射文 ...
- 页码插入JS脚本
(function() { var obj = document.createElement("script"); obj.type = "text/javascript ...
- 44 道 JavaScript 难题(JavaScript Puzzlers!)
JavaScript Puzzlers原文 1. ["1", "2", "3"].map(parseInt) 答案:[1, NaN, NaN ...