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);这个代码就是对图形图元文件进行操作。
时间: 2024-10-12 06:40:34

C#中如何生成矢量图的相关文章

PowerDesigner中翻转生成PDM图时把Name属性变成注释(转)

在pd里面运行下面这段代码'******************************************************************************'* File: name2comment.vbs'* Purpose: Database generation cannot use object names anymore' in version 7 and above.' It always uses the object codes.'' In case

protel DXP的类矢量图功能

一.概述 在写论文的过程中,我们经常需要将protel DXP上的原理图贴入到WORD中.我们可以选择使用截图工具,然后再导入到WORD中.但是由于普通截图图形文件都是位图文件,当我们将图形文件导入WORD后,通常需要调整大小,结果就使得文件中的图形变得模糊.当把论文打印出来,效果也非常差. 其实Proteus是具有将原理图转换为"矢量图EMF文件"的功能,但是protel DXP却没有这个功能,有没有好的办法使得protel DXP也具有生成矢量图的功能呢?这就是本文要解决的问题.

eclipse下生成Java类图和时序图,生成UML图

最近老板让我做类图和时序图,提苦恼的,完全不会,就从网上整理了些 1.安装和使用AmaterasUML 安装AmaterasUML前,需要先安装GEF 采用eclipse在线安装方式安装就好. eclipse在线安装GEF的地址:http://download.eclipse.org/tools/gef/updates/releases/ 安装好GEF后,安装AmaterasUML 先到如下地址下载:http://sourceforge.jp/projects/amateras/download

在 Xcode 6 中使用矢量图( iPhone 6 置配 UI)

在 Xcode 6 中使用矢量图( iPhone 6 置配 UI) (本文转载:http://iosdeveloper.diandian.com/post/2014-09-25/40063062789) iOS应用程序是一个图像主导的产品.在开发一个应用程序时,你需要各种尺寸的图标,你需要为每个图像文件制作一个@1x 尺寸和一个@2x尺寸.这样你的应用看上去才足够精美.但缺点是你必须单独生成这些文件.随着iPhone6和iPhone6 Plus的到来,这个问题变得更加让人头疼:@3x 资源. 幸

在xcode6中使用矢量图(iPhone6置配UI)

ios应用程序是一个图像主导的产品.在开发一个应用程序时,你需要各种尺寸的图标,你需要为每个图像文件制作一个@1x尺寸和一个@2x尺寸.这样你的应用看上去才足够精美.但缺点是你必须单独生成这些文件.随着iphone6和iphone6 Plus的到来,这个问题变得更加让人头疼:@3x 资源. 幸运的是,苹果在xcode6中提供了一些伟大的工具来管理这些资源.更好的是,这种方式也让你的应用程序能够运行在未来的ios设备上打下了基础.工具之一是xcode6和ios8支持以Storyboard(或xib

[iOS] 试一发 Xcode6 中的矢量图

Xcode6中有一个十分方便的功能,就是导入的图片资源支持矢量图格式.这对于开发者来说无疑是个天大的好消息. 不过,这矢量图怎么搞?有什么好处?效果到底如何?不妨打开 Xcode6 来一发试试看,亲自体验一下矢量图的魅力. 我们先用Sketch制作了一个30*30的图标,导出了pdf和png格式: 然后在Xcode6的 Images.xcassets中添加两个图标.首先是矢量图版本的: 接下来是PNG版本的,我们只上传了@1x 版本的位图: 然后我们找一个页面,同时放上两个图片进行比较. 第一次

ps中的位图,矢量图,颜色模式

什么是位图?什么是矢量图? 位图是由像素组成的图像,在缩放和旋转的时候容易失真,同时文件容量较大 矢量图是根据几何特性来绘制的图形,通过数学公式计算获得的,不易制作色彩变化太多的图象 颜色模式 RGB模式.CMYK模式.HSB模式.Lab颜色模式.位图模式.灰度模式 1:RGB模式 是Photoshop中最常用的模式,也被称之为真彩色模式,主要是由R(红).G(绿).B(蓝)3种基本色相加进行配色,并组成了红.绿.蓝3种颜色通道,每个颜色通道包含了8位颜色信息,每一个信息是用0~255的亮度值来

Xcode项目中使用PDF 格式的矢量图作为图片资源

从xcode6开始, Xcode项目中可使用PDF 格式的矢量图(1X)作为图片资源. Xcode 会自动使用矢量图等比适配,而不需要再导入 @2x.@3x 多张切图.这样不仅省去了PNG图片还减少了图片资源众多管理,命名的麻烦. 使用方法: 把PDF格式的矢量图形添加到Xcode的素材管理分类 - Asset Catalog里, 调用图片集合名字即可 1.在Xcode里打开Images.xcassets. 2.创建一个新的图片集合 - New Image Set. 3.在属性检查器 - Att

csv读入数据,用julia/matplotlib/pyplot 画矢量图导入word中

这是是用julia来实现画图.julia有三个画图库:Winston.Gadfly.PyPlot 这里用的是pyplot,事实上他是基于matplotlib的 1.首先在juno里安装两个库 juno是julia的集成开放环境(IDE) 没有安装juno的请看这里:http://blog.csdn.net/fuzimango/article/details/47721055 在juno中安装这两个库:直接ctrl+Enter执行就成了 Pkg.add("DataFrames")#表格库