C#中如何生成矢量图
主要的功能就是使用C#画矢量图,然后导出到Word、Excel、Powerpoint中,并且能够再次被编辑。以下是解决过程:
首先应该确定在Office文档中可编辑图形使用的格式;学习了相关资料,了解到Office文档主要支持三种矢量图的格式:1、VML图形,2、WMF文件格式,3、EMF文件格式。由于VML图开一般使用HTML语言进行描述,不便于进行操作,因此决定采用WMF和EMF文件格式。
接下来的工作就是要让C#根据提供的数据生成WMF或EMF格式的矢量图形;学习了C#提供的GDI+绘图类库,GDI+可以绘制矢量图形,代码示例如下:
/// <summary>
/// 导出为 Emf 或 Wmf 文件
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns>是否成功</returns>
private bool Export(string filePath)
{
try
{
Bitmap bmp = new Bitmap(220,220);
Graphics gs = Graphics.FromImage(bmp);
Metafile mf = new Metafile(filePath,gs.GetHdc());
Graphics g = Graphics.FromImage(mf);
Draw(g);
g.Save();
g.Dispose();
mf.Dispose();
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 绘制图形
/// </summary>
/// <param name="g">用于绘图的Graphics对象</param>
private void Draw(Graphics g)
{
HatchBrush hb = new HatchBrush(HatchStyle.LightUpwardDiagonal, Color.Black, Color.White);
g.FillEllipse(Brushes.Gray,10f,10f,200,200);
g.DrawEllipse(new Pen(Color.Black,1f),10f,10f,200,200);
g.FillEllipse(hb,30f,95f,30,30);
g.DrawEllipse(new Pen(Color.Black,1f),30f,95f,30,30);
g.FillEllipse(hb,160f,95f,30,30);
g.DrawEllipse(new Pen(Color.Black,1f),160f,95f,30,30);
g.FillEllipse(hb,95f,30f,30,30);
g.DrawEllipse(new Pen(Color.Black,1f),95f,30f,30,30);
g.FillEllipse(hb,95f,160f,30,30);
g.DrawEllipse(new Pen(Color.Black,1f),95f,160f,30,30);
g.FillEllipse(Brushes.Blue,60f,60f,100,100);
g.DrawEllipse(new Pen(Color.Black,1f),60f,60f,100,100);
g.FillEllipse(Brushes.BlanchedAlmond,95f,95f,30,30);
g.DrawEllipse(new Pen(Color.Black,1f),95f,95f,30,30);
g.DrawRectangle(new Pen(System.Drawing.Brushes.Blue,0.1f),6,6,208,208);
g.DrawLine(new Pen(Color.Black,0.1f),110f,110f,220f,25f);
g.DrawString("剖面图",new Font("宋体",9f),Brushes.Green,220f,20f);
}
导出Emf 或 Wmf 文件,那就是矢量图 Metafile mf = new Metafile(filePath,gs.GetHdc()); Graphics g = Graphics.FromImage(mf);这个代码就是对图形图元文件进行操作。
C#中如何生成矢量图相关推荐
- c#位图转换未矢量图_C#中如何生成矢量图
标签: 主要的功能就是使用C#画矢量图,然后导出到Word.Excel.Powerpoint中,并且能够再次被编辑.以下是解决过程: 首先应该确定在Office文档中可编辑图形使用的格式:学习了相关资 ...
- latex中插入visio矢量图的方法
其实,我们用visio画的都是矢量图,只是我们通常转换成位图(jpg等格式)后再使用,这样其实就失去了矢量图的价值了.这里讲一种在latex中插入viso生成的矢量图的方法. 首先,在我们的电脑中安装 ...
- python图像识别生成矢量图_使用python制作矢量图
Get一个使用python制作矢量图的新技能: 前言: Matplotlib远比我们想象的强大,而这只是众多python强大的包中的一个,不愧是群英荟萃. 绘图后端我们一般是看不见的,matplotl ...
- 前端项目中位图和矢量图的优缺点及iconfont小图标制作流程
1.BMP图 BMP格式的图片,取自英文单词Bitmap,Windows中文版翻译文'位图' 支持四种的BPM格式的图 l 单色位图(1位)--1字节记录8个像素,图片一般只有黑和白. l 1 ...
- AI绘图实战(十):制作线稿矢量图之包头巾的女人,画矢量图/生成矢量图/导出矢量图/直出svg/vector studio插件使用 | Stable Diffusion成为设计师生产力工具
S:AI能取代设计师么? I :至少在设计行业,目前AI扮演的主要角色还是超级工具,要顶替?除非甲方对设计效果无所畏惧~~ 预先学习: 安装及其问题解决参考:<Windows安装Stable D ...
- Altium designer AD原理图导入word文档、pdf,生成矢量图的方法;
文章目录 参数选择-schematic -取消GDI+渲染文本+ ->减少渲染 然后在复制到VISIO里面,取消组合->变成矢量图 将矢量图粘贴在word 中或者再生成pdf 就不会糊了 ...
- IDEA中自动生成类图方法
1.打开设置 File-> Setting或windows下按Ctrl+Alt+S 2.找到 Tools -> Diagrams ,如下图 3.在Java Class Diagrams 中 ...
- python 生成矢量图并导入word中
由于论文出图需要,用matplotlib生成的png格式的图像放大后明显模糊,因此可以将其直接保存为pdf格式,之后再经过几次转换就可以导入到word中,具体步骤如下: 1 用matplotlib将图 ...
- 在opencv中如何生成灰度图
灰度图就是用一个通道来表示灰度值,范围为0-255,也就是8byte就可以. 所以在openv中type CV_8UC1就可以表示灰度图. Mat img(size, CV_8UC1, Scalar( ...
- 【记录】使用Python+emf转换工具生成矢量图
说明:文章转自原文 为防止原文删除,记录如下: 由于论文出图需要,用matplotlib生成的png格式的图像放大后明显模糊,因此可以将其直接保存为pdf格式,之后再经过几次转换就可以导入到word中 ...
最新文章
- TensorFlow入门(一)基本用法
- Android 软键盘弹出时布局内指定内容上移实现及问题解决
- Xamarin Android权限请求
- c语言对n个数选择排序_选择排序法 -- C语言
- PyQt5 技术篇-QSpinBox选值框值改变触发事件实例演示,获取QSpinBox组件的值,选值框的边界值设置方法
- java color类 蓝色_java中Color类的简单总结
- 键盘上ALT键的妙用
- linux6.8设置中文界面,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面
- Python中去除字符串中空格的方法
- 神奇的mysql查询
- python程序设计第二版课后答案江红_Python核心编程第二版 第十三章课后答案
- 使用orCAD Library Builder建立TO-220的封装
- Arduino+SIM900A+继电器
- STM32F100X RCC_APB2Periph_AFIO--复用IO时钟的使用
- 有哪些好用的论文检索网站?
- php搭建简单表格的制作方法,最简单的表格制作方法技巧
- iOS URL Scheme
- 【论文笔记】BusTr,基于实时交通数据的公交旅行时间预测
- 系统管理员在企业中的职业定位及发展方向
- 接口测试 Pytest的简单示例