您现在的位置是:首页 > 文章详情

C# 绘制Word形状——基本形状、组合形状

日期:2018-06-05点击:584

一、序言

在Office Word中,支持在Word文档中插入类型非常丰富的形状,包括线条、矩形、基本形状(诸如圆形、多边形、星形、括号、笑脸等等图形)、箭头形状、公式形状、流程图、旗帜图形、标注图形等等,我们在编程过程中,想要在Word中绘制不同类型的图形,可以通过类库来操作。控件Spire.Doc for .NET 6.0及以上版本开始支持Office Word中的所有图形,可以通过代码操作某个单一的形状,也可以通过将单一形状进行组合来获得想要的图形或形状效果,当然,也支持自己自定义图形,通过编程绘制也是可以的。下面将介绍向Word绘制形状和组合形状的方法,方法中的代码供参考。

PS:

  • Spire.Doc for .NET获取地址
  • 安装后,dll文件可在安装路径下的Bin文件夹中获取

Dll引用

二、代码示例

(一)绘制单一形状

步骤1:添加如下using指定

using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; using System.Drawing;

 

步骤2:创建示例,添加section、paragraph

//创建一个Document实例 Document doc = new Document(); //添加一个section paragraph Section sec = doc.AddSection(); Paragraph para1 = sec.AddParagraph();

 

步骤3:在文档指定位置插入形状,并设置形状类型、大小、填充颜色、线条样式等

(这里简单列举几个形状的添加方法,方法比较简单,不做赘述,效果图中列举了部分形状样式,需要其他样式的形状可自行设置添加)

 //插入一个矩形 ShapeObject shape1 = para1.AppendShape(50, 50, ShapeType.Rectangle); shape1.FillColor = Color.Blue; shape1.StrokeColor = Color.LightSkyBlue; shape1.HorizontalPosition = 20; shape1.VerticalPosition = 20; //插入一个圆形 ShapeObject shape2 = para1.AppendShape(50, 50, ShapeType.Ellipse); shape2.FillColor = Color.Purple; shape2.StrokeColor = Color.LightPink; shape2.LineStyle = ShapeLineStyle.Single; shape2.StrokeWeight = 1; shape2.HorizontalPosition = 80; shape2.VerticalPosition = 20; //插入一个公式符号 + ShapeObject shape3 = para1.AppendShape(50, 50, ShapeType.Plus); shape3.FillColor = Color.DarkCyan; shape3.StrokeColor = Color.LightGreen; shape3.LineStyle = ShapeLineStyle.Single; shape3.StrokeWeight = 1; shape3.HorizontalPosition = 140; shape3.VerticalPosition = 20; //插入一颗星形 ShapeObject shape4 = para1.AppendShape(50, 50, ShapeType.Star); shape4.FillColor = Color.Red; shape4.StrokeColor = Color.Gold; shape4.LineStyle = ShapeLineStyle.Single; shape4.HorizontalPosition = 200; shape4.VerticalPosition = 20;

 

步骤4:保存文档

//保存并打开文档 doc.SaveToFile("InsertShapes.docx", FileFormat.Docx2010); System.Diagnostics.Process.Start("InsertShapes.docx");

 

形状添加效果:

全部代码:

 1 using Spire.Doc;  2 using Spire.Doc.Documents;  3 using Spire.Doc.Fields;  4 using System.Drawing;  5  6 namespace AddShapes_Doc  7 {  8 class Program  9  {  10 static void Main(string[] args)  11  {  12 //创建一个Document实例  13 Document doc = new Document();  14  15 //添加一个section paragraph  16 Section sec = doc.AddSection();  17 Paragraph para1 = sec.AddParagraph();  18  19 //插入一个矩形  20 ShapeObject shape1 = para1.AppendShape(50, 50, ShapeType.Rectangle);  21 shape1.FillColor = Color.Blue;  22 shape1.StrokeColor = Color.LightSkyBlue;  23 shape1.HorizontalPosition = 20;  24 shape1.VerticalPosition = 20;  25  26 //插入一个圆形  27 ShapeObject shape2 = para1.AppendShape(50, 50, ShapeType.Ellipse);  28 shape2.FillColor = Color.Purple;  29 shape2.StrokeColor = Color.LightPink;  30 shape2.LineStyle = ShapeLineStyle.Single;  31 shape2.StrokeWeight = 1;  32 shape2.HorizontalPosition = 80;  33 shape2.VerticalPosition = 20;  34  35 //插入一个公式符号 +  36 ShapeObject shape3 = para1.AppendShape(50, 50, ShapeType.Plus);  37 shape3.FillColor = Color.DarkCyan;  38 shape3.StrokeColor = Color.LightGreen;  39 shape3.LineStyle = ShapeLineStyle.Single;  40 shape3.StrokeWeight = 1;  41 shape3.HorizontalPosition = 140;  42 shape3.VerticalPosition = 20;  43  44 //插入一颗星形  45 ShapeObject shape4 = para1.AppendShape(50, 50, ShapeType.Star);  46 shape4.FillColor = Color.Red;  47 shape4.StrokeColor = Color.Gold;  48 shape4.LineStyle = ShapeLineStyle.Single;  49 shape4.HorizontalPosition = 200;  50 shape4.VerticalPosition = 20;  51  52 //插入一个立方体  53 ShapeObject shape5 = para1.AppendShape(50, 50, ShapeType.Cube);  54 shape5.FillColor = Color.OrangeRed;  55 shape5.StrokeColor = Color.Orange;  56 shape5.LineStyle = ShapeLineStyle.Single;  57 shape5.HorizontalPosition = 260;  58 shape5.VerticalPosition = 20;  59  60 //插入一个圆柱体  61 ShapeObject shape6 = para1.AppendShape(50, 50, ShapeType.Can);  62 shape6.FillColor = Color.Goldenrod;  63 shape6.StrokeColor = Color.Gold;  64 shape6.LineStyle = ShapeLineStyle.Single;  65 shape6.HorizontalPosition = 320;  66 shape6.VerticalPosition = 20;  67  68 //插入一个箭头  69 ShapeObject shape7 = para1.AppendShape(50, 50, ShapeType.Arrow);  70 shape7.FillColor = Color.Yellow;  71 shape7.StrokeColor = Color.Yellow;  72 shape7.LineStyle = ShapeLineStyle.Single;  73 shape7.HorizontalPosition = 20;  74 shape7.VerticalPosition = 80;  75  76 //插入一个v形臂章图形  77 ShapeObject shape8 = para1.AppendShape(50, 50, ShapeType.Chevron);  78 shape8.FillColor = Color.YellowGreen;  79 shape8.StrokeColor = Color.Yellow;  80 shape8.LineStyle = ShapeLineStyle.Single;  81 shape8.HorizontalPosition = 80;  82 shape8.VerticalPosition = 80;  83  84 //插入一个循环箭头图形  85 ShapeObject shape9 = para1.AppendShape(50, 50, ShapeType.CircularArrow);  86 shape9.FillColor = Color.Green;  87 shape9.StrokeColor = Color.Yellow;  88 shape9.LineStyle = ShapeLineStyle.Single;  89 shape9.HorizontalPosition = 140;  90 shape9.VerticalPosition = 80;  91  92 //插入一个云图形  93 ShapeObject shape10 = para1.AppendShape(50, 50, ShapeType.CloudCallout);  94 shape10.FillColor = Color.LightSkyBlue;  95 shape10.StrokeColor = Color.White;  96 shape10.LineStyle = ShapeLineStyle.Single;  97 shape10.HorizontalPosition = 200;  98 shape10.VerticalPosition = 80;  99 100 //插入一个环形图 101 ShapeObject shape11 = para1.AppendShape(50, 50, ShapeType.Donut); 102 shape11.FillColor = Color.Pink; 103 shape11.StrokeColor = Color.White; 104 shape11.LineStyle = ShapeLineStyle.Single; 105 shape11.HorizontalPosition = 260; 106 shape11.VerticalPosition = 80; 107 108 //插入一个波浪形状图 109 ShapeObject shape12 = para1.AppendShape(50, 50, ShapeType.DoubleWave); 110 shape12.FillColor = Color.Plum; 111 shape12.StrokeColor = Color.White; 112 shape12.LineStyle = ShapeLineStyle.Single; 113 shape12.HorizontalPosition = 320; 114 shape12.VerticalPosition = 80; 115 116 //插入一个礼结状图形 117 ShapeObject shape13 = para1.AppendShape(50, 50, ShapeType.EllipseRibbon); 118 shape13.FillColor = Color.RosyBrown; 119 shape13.StrokeColor = Color.White; 120 shape13.LineStyle = ShapeLineStyle.Single; 121 shape13.HorizontalPosition = 20; 122 shape13.VerticalPosition = 140; 123 124 //插入一个心形图 125 ShapeObject shape14 = para1.AppendShape(50, 50, ShapeType.Heart); 126 shape14.FillColor = Color.Red; 127 shape14.StrokeColor = Color.White; 128 shape14.LineStyle = ShapeLineStyle.Single; 129 shape14.HorizontalPosition = 80; 130 shape14.VerticalPosition = 140; 131 132 //插入一个六边形图形 133 ShapeObject shape15 = para1.AppendShape(50, 50, ShapeType.Hexagon); 134 shape15.FillColor = Color.DarkCyan; 135 shape15.StrokeColor = Color.White; 136 shape15.LineStyle = ShapeLineStyle.Single; 137 shape15.HorizontalPosition = 140; 138 shape15.VerticalPosition = 140; 139 140 //插入一个不规则图形 141 ShapeObject shape16 = para1.AppendShape(50, 50, ShapeType.IrregularSeal1); 142 shape16.FillColor = Color.DeepPink; 143 shape16.StrokeColor = Color.White; 144 shape16.LineStyle = ShapeLineStyle.Single; 145 shape16.HorizontalPosition = 200; 146 shape16.VerticalPosition = 140; 147 148 //插入一个月亮形状 149 ShapeObject shape17 = para1.AppendShape(50, 50, ShapeType.Moon); 150 shape17.FillColor = Color.Violet; 151 shape17.StrokeColor = Color.White; 152 shape17.LineStyle = ShapeLineStyle.Single; 153 shape17.HorizontalPosition = 260; 154 shape17.VerticalPosition = 140; 155 156 //插入一个"禁止"形状 157 ShapeObject shape18 = para1.AppendShape(50, 50, ShapeType.NoSmoking); 158 shape18.FillColor = Color.Yellow; 159 shape18.StrokeColor = Color.Goldenrod; 160 shape18.LineStyle = ShapeLineStyle.Single; 161 shape18.HorizontalPosition = 320; 162 shape18.VerticalPosition = 140; 163 164 //保存并打开文档 165 doc.SaveToFile("InsertShapes.docx", FileFormat.Docx2010); 166 System.Diagnostics.Process.Start("InsertShapes.docx"); 167  } 168  } 169 }
View Code

 

(二)添加组合形状

步骤1:添加如下using指令

using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; using System.Drawing;

 

步骤2:创建文档,添加section、paragraph

Document doc = new Document(); Section sec = doc.AddSection(); Paragraph para1 = sec.AddParagraph();

 

步骤3:添加文字,并应用格式到文字

para1.AppendText("中日文化交流"); ParagraphStyle style1 = new ParagraphStyle(doc); style1.Name = "titleStyle"; style1.CharacterFormat.Bold = true; style1.CharacterFormat.FontName = "隶书"; style1.CharacterFormat.FontSize = 30f; doc.Styles.Add(style1); para1.ApplyStyle("titleStyle"); para1.Format.HorizontalAlignment = HorizontalAlignment.Center;

 

步骤4:实例化段落2,并创建一个形状组合,并设置大小

//实例化段落2 Paragraph para2 = sec.AddParagraph(); //创建一个形状组合并设置大小 ShapeGroup shapegr = para2.AppendShapeGroup(300, 300);

 

步骤5:绘制一个中国国旗,这里需要组合形状矩形和五角星形,并填充相应的颜色

 //添加一个矩形到形状组合 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Rectangle) { Width = 900, Height = 500, LineStyle = ShapeLineStyle.Single, FillColor = Color.Red, StrokeColor = Color.Red, StrokeWeight = 1, }); //添加第一个五角星到形状组合 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star) { Width = 100, Height = 100, VerticalPosition = 90, HorizontalPosition = 90, LineStyle = ShapeLineStyle.Single, FillColor = Color.Yellow, StrokeColor = Color.Yellow, StrokeWeight = 1, }); //添加第二个五角星到形状组合 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star) { Width = 50, Height = 50, VerticalPosition = 40, HorizontalPosition = 210, LineStyle = ShapeLineStyle.Single, FillColor = Color.Yellow, StrokeColor = Color.Yellow, StrokeWeight = 1, }); //添加第三个五角星到形状组合 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star) { Width = 50, Height = 50, VerticalPosition = 80, HorizontalPosition = 280, LineStyle = ShapeLineStyle.Single, FillColor = Color.Yellow, StrokeColor = Color.Yellow, StrokeWeight = 1, }); //添加第四个五角星到形状组合 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star) { Width = 50, Height = 50, VerticalPosition = 160, HorizontalPosition = 280, LineStyle = ShapeLineStyle.Single, FillColor = Color.Yellow, StrokeColor = Color.Yellow, StrokeWeight = 1, }); //添加第五个五角星到形状组合 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star) { Width = 50, Height = 50, VerticalPosition = 220, HorizontalPosition = 210, LineStyle = ShapeLineStyle.Single, FillColor = Color.Yellow, StrokeColor = Color.Yellow, StrokeWeight = 1, });

 

步骤6:绘制一个日本国旗,需要组合形状矩形和圆形,并填充颜色

//绘制一个矩形并添加到形状组合 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Rectangle) { Width = 900, Height = 500, VerticalPosition = 700, HorizontalPosition = 600, LineStyle = ShapeLineStyle.Single, FillColor = Color.WhiteSmoke, StrokeColor = Color.WhiteSmoke, StrokeWeight = 1, }); //绘制一个圆形并添加到形状组合 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Ellipse) { Width = 250, Height = 250, VerticalPosition = 800, HorizontalPosition = 900, LineStyle = ShapeLineStyle.Single, FillColor = Color.Red, StrokeColor = Color.Red, StrokeWeight = 1, });

 

步骤7:保存文档

//保存并打开文档 doc.SaveToFile("InsertShapegroups.docx", FileFormat.Docx2010); System.Diagnostics.Process.Start("InsertShapegroups.docx");

 

添加效果:

(此时的图形是组合后的效果,任意拖动图形不会出现各个形状分离、错位的情况。)

全部代码:

 1 using Spire.Doc;  2 using Spire.Doc.Documents;  3 using Spire.Doc.Fields;  4 using System.Drawing;  5  6 namespace InsertShapesGroup_Doc  7 {  8 class Program  9  {  10 static void Main(string[] args)  11  {  12 //创建一个Document实例并添加section及paragraph  13 Document doc = new Document();  14 Section sec = doc.AddSection();  15 Paragraph para1 = sec.AddParagraph();  16 //添加文字,并应用格式到文字  17 para1.AppendText("中日文化交流");  18 ParagraphStyle style1 = new ParagraphStyle(doc);  19 style1.Name = "titleStyle";  20 style1.CharacterFormat.Bold = true;  21 style1.CharacterFormat.FontName = "隶书";  22 style1.CharacterFormat.FontSize = 30f;  23  doc.Styles.Add(style1);  24 para1.ApplyStyle("titleStyle");  25 para1.Format.HorizontalAlignment = HorizontalAlignment.Center;  26  27 //实例化段落2  28 Paragraph para2 = sec.AddParagraph();  29 //创建一个形状组合并设置大小  30 ShapeGroup shapegr = para2.AppendShapeGroup(300, 300);  31  32 //添加一个矩形到形状组合  33 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Rectangle)  34  {  35 Width = 900,  36 Height = 500,  37 LineStyle = ShapeLineStyle.Single,  38 FillColor = Color.Red,  39 StrokeColor = Color.Red,  40 StrokeWeight = 1,  41  });  42  43 //添加第一个五角星到形状组合  44 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)  45  {  46 Width = 100,  47 Height = 100,  48 VerticalPosition = 90,  49 HorizontalPosition = 90,  50 LineStyle = ShapeLineStyle.Single,  51 FillColor = Color.Yellow,  52 StrokeColor = Color.Yellow,  53 StrokeWeight = 1,  54  });  55 //添加第二个五角星到形状组合  56 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)  57  {  58 Width = 50,  59 Height = 50,  60 VerticalPosition = 40,  61 HorizontalPosition = 210,  62 LineStyle = ShapeLineStyle.Single,  63 FillColor = Color.Yellow,  64 StrokeColor = Color.Yellow,  65 StrokeWeight = 1,  66  });  67 //添加第三个五角星到形状组合  68 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)  69  {  70 Width = 50,  71 Height = 50,  72 VerticalPosition = 80,  73 HorizontalPosition = 280,  74 LineStyle = ShapeLineStyle.Single,  75 FillColor = Color.Yellow,  76 StrokeColor = Color.Yellow,  77 StrokeWeight = 1,  78  });  79 //添加第四个五角星到形状组合  80 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)  81  {  82 Width = 50,  83 Height = 50,  84 VerticalPosition = 160,  85 HorizontalPosition = 280,  86 LineStyle = ShapeLineStyle.Single,  87 FillColor = Color.Yellow,  88 StrokeColor = Color.Yellow,  89 StrokeWeight = 1,  90  });  91 //添加第五个五角星到形状组合  92 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)  93  {  94 Width = 50,  95 Height = 50,  96 VerticalPosition = 220,  97 HorizontalPosition = 210,  98 LineStyle = ShapeLineStyle.Single,  99 FillColor = Color.Yellow, 100 StrokeColor = Color.Yellow, 101 StrokeWeight = 1, 102  }); 103 104 //绘制一个矩形并添加到形状组合 105 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Rectangle) 106  { 107 Width = 900, 108 Height = 500, 109 VerticalPosition = 700, 110 HorizontalPosition = 600, 111 LineStyle = ShapeLineStyle.Single, 112 FillColor = Color.WhiteSmoke, 113 StrokeColor = Color.Wheat, 114 StrokeWeight = 1, 115  }); 116 //绘制一个圆形并添加到形状组合 117 shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Ellipse) 118  { 119 Width = 250, 120 Height = 250, 121 VerticalPosition = 800, 122 HorizontalPosition = 900, 123 LineStyle = ShapeLineStyle.Single, 124 FillColor = Color.Red, 125 StrokeColor = Color.Red, 126 StrokeWeight = 1, 127  }); 128 129 //保存并打开文档 130 doc.SaveToFile("InsertShapegroups.docx", FileFormat.Docx2010); 131 System.Diagnostics.Process.Start("InsertShapegroups.docx"); 132  } 133  } 134 }
View Code

 

以上全部是关于Word中绘制图形形状的内容。如需转载,请注明出处!

感谢阅读!

原文链接:https://yq.aliyun.com/articles/627813
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章