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. ...
随机推荐
- 【转】阿里云Linux系统被攻击的处理过程
4-22日 19:48分,在等女儿跳舞下课的时候,在“多看”进入大刘等人的<毁灭之城:地球碎块>,读到了“诅咒 3.0”病毒出现的时候,阿里云发来短信“尊敬的用户,您的云服务器x.x.x. ...
- 一步步实现一个基本的缓存模块·续, 添加Memcached调用实现
jusfr 原创,转载请注明来自博客园. 在之前的实现中,我们初步实现了一个缓存模块:包含一个基于Http请求的缓存实现,一个基于HttpRuntime.Cache进程级的缓存实现,但观察代码,会发现 ...
- javaweb学习2——HTTP协议
声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,JavaWeb学习点此跳转 本文链接:https://www.cnblogs.com/xdp- ...
- LR测试报告分析 -详解
1. 结果摘要 LoadRunner进行场景测试结果收集后,首先显示的该结果的一个摘要信息,如下图所示.概要中列出了场景执行情况.“Statistics Summary(统计信息摘要)”.“Trans ...
- python的类和对象2(self参数)
python的类和对象2(self参数) 1.python里面对象的方法都会有self参数,它就相当于C++里面的this指针:绑定方法,据说有了这个参数,Python 再也不会傻傻分不清是哪个对象在 ...
- SQL Server 各版本安装包分享
已将SQL Server 2005以上各版本的安装包分享到百度云盘,有需要的朋友可以下载进行安装,相关安装教程可以百度搜索.安装遇到难以解决的问题可以留言给我,2016版以上在选择功能的时候建议初学者 ...
- Netty源码分析第5章(ByteBuf)---->第2节: ByteBuf的分类
Netty源码分析第五章: ByteBuf 第二节: ByteBuf的分类 上一小节简单介绍了AbstractByteBuf这个抽象类, 这一小节对其子类的分类做一个简单的介绍 ByteBuf根据不同 ...
- Spring入门学习笔记(2)——基于Java的配置
目录 基于Java的配置 @Configuration & @Bean Annotations Example 注入Bean依赖 @Import注解 Lifecycle Callbacks(声 ...
- windows的滚动条使用
背景 在毕业快一年的工作时间中,对windows编程的某些特性并不够熟悉,例如滚动条的使用.在一次需求中需要用到滚动条,在开发过程中走了不少弯路,因此需要做一些笔记总结一下学习到的内容. 先推荐几个写 ...
- 【Docker】第二篇 Docker镜像管理
一.搜索镜像 1.下载一个docker镜像:我们可以通过登陆docker网站搜索自己需要的镜像,可以选择自己所需要的版本,然后通过详情也可以看到:网址:https://hub.docker.com/2 ...