主要的功能就是使用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#中如何生成矢量图相关推荐

  1. c#位图转换未矢量图_C#中如何生成矢量图

    标签: 主要的功能就是使用C#画矢量图,然后导出到Word.Excel.Powerpoint中,并且能够再次被编辑.以下是解决过程: 首先应该确定在Office文档中可编辑图形使用的格式:学习了相关资 ...

  2. latex中插入visio矢量图的方法

    其实,我们用visio画的都是矢量图,只是我们通常转换成位图(jpg等格式)后再使用,这样其实就失去了矢量图的价值了.这里讲一种在latex中插入viso生成的矢量图的方法. 首先,在我们的电脑中安装 ...

  3. python图像识别生成矢量图_使用python制作矢量图

    Get一个使用python制作矢量图的新技能: 前言: Matplotlib远比我们想象的强大,而这只是众多python强大的包中的一个,不愧是群英荟萃. 绘图后端我们一般是看不见的,matplotl ...

  4. 前端项目中位图和矢量图的优缺点及iconfont小图标制作流程

    1.BMP图 BMP格式的图片,取自英文单词Bitmap,Windows中文版翻译文'位图' 支持四种的BPM格式的图 l   单色位图(1位)--1字节记录8个像素,图片一般只有黑和白. l   1 ...

  5. AI绘图实战(十):制作线稿矢量图之包头巾的女人,画矢量图/生成矢量图/导出矢量图/直出svg/vector studio插件使用 | Stable Diffusion成为设计师生产力工具

    S:AI能取代设计师么? I :至少在设计行业,目前AI扮演的主要角色还是超级工具,要顶替?除非甲方对设计效果无所畏惧~~ 预先学习: 安装及其问题解决参考:<Windows安装Stable D ...

  6. Altium designer AD原理图导入word文档、pdf,生成矢量图的方法;

    文章目录 参数选择-schematic -取消GDI+渲染文本+ ->减少渲染 然后在复制到VISIO里面,取消组合->变成矢量图 将矢量图粘贴在word 中或者再生成pdf 就不会糊了 ...

  7. IDEA中自动生成类图方法

    1.打开设置 File-> Setting或windows下按Ctrl+Alt+S 2.找到 Tools -> Diagrams ,如下图 3.在Java Class Diagrams 中 ...

  8. python 生成矢量图并导入word中

    由于论文出图需要,用matplotlib生成的png格式的图像放大后明显模糊,因此可以将其直接保存为pdf格式,之后再经过几次转换就可以导入到word中,具体步骤如下: 1 用matplotlib将图 ...

  9. 在opencv中如何生成灰度图

    灰度图就是用一个通道来表示灰度值,范围为0-255,也就是8byte就可以. 所以在openv中type CV_8UC1就可以表示灰度图. Mat img(size, CV_8UC1, Scalar( ...

  10. 【记录】使用Python+emf转换工具生成矢量图

    说明:文章转自原文 为防止原文删除,记录如下: 由于论文出图需要,用matplotlib生成的png格式的图像放大后明显模糊,因此可以将其直接保存为pdf格式,之后再经过几次转换就可以导入到word中 ...

最新文章

  1. TensorFlow入门(一)基本用法
  2. Android 软键盘弹出时布局内指定内容上移实现及问题解决
  3. Xamarin Android权限请求
  4. c语言对n个数选择排序_选择排序法 -- C语言
  5. PyQt5 技术篇-QSpinBox选值框值改变触发事件实例演示,获取QSpinBox组件的值,选值框的边界值设置方法
  6. java color类 蓝色_java中Color类的简单总结
  7. 键盘上ALT键的妙用
  8. linux6.8设置中文界面,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面
  9. Python中去除字符串中空格的方法
  10. 神奇的mysql查询
  11. python程序设计第二版课后答案江红_Python核心编程第二版 第十三章课后答案
  12. 使用orCAD Library Builder建立TO-220的封装
  13. Arduino+SIM900A+继电器
  14. STM32F100X RCC_APB2Periph_AFIO--复用IO时钟的使用
  15. 有哪些好用的论文检索网站?
  16. php搭建简单表格的制作方法,最简单的表格制作方法技巧
  17. iOS URL Scheme
  18. 【论文笔记】BusTr,基于实时交通数据的公交旅行时间预测
  19. 系统管理员在企业中的职业定位及发展方向
  20. 接口测试 Pytest的简单示例

热门文章

  1. 世界编程语言2008年初排行榜
  2. 3.6 tensorflow 中LSTM和GRU模块使用意境级讲解
  3. C语言中的main函数为什么被称作程序入口
  4. 聚类算法:kmeans
  5. linux下安装Firefox
  6. linux/windows双系统安装、启动顺序设置及重新设置
  7. win10系统可禁用的服务器,Win10系统SysMain服务是什么?Win10系统SysMain能不能禁用?...
  8. mysql 两个日期加减_mysql加减时间-函数-时间加减
  9. ADT 使用和问题总结
  10. 基于HTTP构建YUM网络源实战