zoukankan      html  css  js  c++  java
  • C# 绘制Word形状——基本形状、组合形状

    一、序言

    在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中绘制图形形状的内容。如需转载,请注明出处!

    感谢阅读!

  • 相关阅读:
    Android Studio打开非本机项目比较慢的问题。
    Servlet实现重定向的两种方式
    Servlet实现定时刷新到另外一个页面response.setHeader("refresh", "3;url=/...")
    Servlet实现自动刷新功能
    自己实现一个验证码功能
    使用Servlet实现图片下载
    数据库备份的几种方法
    servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)
    java中this的用法如:this.name=name
    步骤一:下载jdk并安装和配置java环境变量
  • 原文地址:https://www.cnblogs.com/Yesi/p/9143978.html
Copyright © 2011-2022 走看看