一、序言
在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 }
以上全部是关于Word中绘制图形形状的内容。如需转载,请注明出处!
感谢阅读!