QT中由图形生成SVG文件实现方案
来源:互联网 发布:淘宝店招手机客户端 编辑:程序博客网 时间:2024/05/17 02:39
一. QT的2D绘图
QT的2D绘图由三个主要的类搭起整个框架:QPainter,QPainterDevice和QPainterEngine。
1. QPainter负责绘图操作的具体执行,如画点,画线,填充,变换等。
2. QPainterDevice为QPainter用来绘图的绘图设备基类,其实际预定义的子类绘图设备包括Qwidget,QImage,QPixmap,QPicture,QPrinter,QSvgGenerator等。
3. QPainterEngine提供不同类型设备的接口,实现交互。
二. QSvgGenerator
QSvgGenerator属于QT中的QtSvg模块,是用于生成SVG文件的绘图设备类,派生于QPainterDevice基类。
使用QPainter进行绘图,并使用QPainter::begint()和end()显性地在QSvgGenerator上开始和结束绘图。在生成SVG文件时,可以指定文件名,文件名路径,SVG标签属性等。
三. Graphics View 框架
Graphics View框架为基于图元的模型视图模型,包括主要三个类:QGraphicsScene,QGraphicsView,QGraphItem,分别为场景,视图,图元。
1. QGraphicsScene:场景管理多个图元,可以传播事件给每个被管理的图元,实现图元的选择,焦点转移,提供无变换的场景的绘制。
场景是图元的容器,通过QGraphicsScene::addItem()可以将图元加入场景容器中。
场景使用render()函数在指定绘图设备上进行场景的绘制。
2. QGraphicsView:视图窗口部件,使场景内容可视化。一个场景可以同时拥有几个视图,这样就意味着相同的场景可以实现不同的可视化窗口。
视图可提供滚动条以浏览大的场景,可以选择QPainter或者OpenGL两种绘图方式绘图。可以接收键盘,鼠标事件。
视图与场景拥有不同的坐标系统,两者之间可通过mapToScreen()和mapFromScene()函数实现坐标转换。
3. QGraphicsItem:图元基类,其派生的常用标准图元有QGraphicsRectItem,QGraphicsLineItem,QGraphicsSvgItem等,另外可以自定义派生于QGraphicsItem的图元类。图元可处理鼠标,键盘,拖放,分组,碰撞检测等事件,拥有自己的坐标系统,可以变换,可以包含子图元。
四. Graphics View框架视图的SVG文件导出
Graphics View框架通过QGraphicsScene::render()函数和QGraphicsView::render()函数,实现将场景和视图上的内容绘制到任意的绘图设备上,两个函数的区别在于使用不同的坐标系统。QGraphicsScene::render()用于无变换的场景绘制,如静态几何图形,文本文档等。QGraphicsView::render()类似于实现屏幕快照,将当前视图数据绘制到指定绘图设备上。
五. 示例
//创建保存SVG文件对话框
QString newPath =QFileDialog::getSaveFileName(this, tr("Save SVG"),
path, tr("SVG files (*.svg)"));
if (newPath.isEmpty())
return;
//指定文件保存路径
path = newPath;
//创建QSvgGenerator对象
QSvgGenerator generator;
generator.setFileName(path);
//创建QPainter绘图对象
QPainter painter;
//开始在QSvgGenerator对象上绘图
painter.begin(&generator);
//QGraphicsView数据导入绘图对象
view->render(&painter);
//绘图结束,QSvgGenerator对象自动生成SVG文档
painter.end();
- QT中由图形生成SVG文件实现方案
- QT中由图形生成SVG文件实现方案
- QT中由图形生成SVG文件实现方案
- QT中由图形生成SVG文件实现方案
- QT中由图形生成SVG文件实现方案(二) 分享
- JS实现SVG图形
- Raphael JS:SVG/VML+JS实现跨浏览器的矢量图形实现方案
- Symbian 中如何用svg文件生成mif 文件
- qt中如果使用svg格式的图片在QPainter中绘制图形
- SVG图形中图形元素移动示例
- Qt实现简单图形绘制,双缓冲机制和显示SVG格式图片
- QT 开源项目由源码生成Pro项目文件
- 在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下:
- 在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下
- SVG可缩放矢量图形文件
- SVG图形拖动功能的实现
- js实现svg图形转存为图片下载
- 生成PDF文件方案--学习中
- [Flex]Flex编程注意之直接获取某个组件的对象(this[]用法)
- Mysql 用临时表实现二次检索
- replace和replaceAll的区别
- M*N的矩阵
- 三答
- QT中由图形生成SVG文件实现方案
- sql查找最小缺失值与重用被删除的键
- QT中由图形生成SVG文件实现方案(二) 分享
- Android数据驱动视图更新
- Android高手之路
- android平台——移动SNS(三)
- struts配置
- WPF入门(三)-使用XAML创建玻璃按钮
- 快乐并痛苦着