设置
  • 日夜间
    随系统
    浅色
    深色
  • 主题色

IT之家学院:微软PowerPoint绘制阵列教程(附下载)

2017/8/1 18:10:41 来源:IT之家 作者:CookTim 责编:仲平
感谢IT之家网友 小西格玛 的线索投递!

感谢IT之家网友 CookTim 的原创投稿

PowerPoint(PPT)是一款非常优秀的工具软件,可能大家对它的第一印象的是用来播放映幻灯片,给客户展示用。当然,这是它最本质的功能。除此之外,有少部分人把它当作轻量化的矢量绘图软件(比如作者)。实际上,ppt的绘图能力一点都不差,除了能够绘制一些基本的形状之外,2013及之后的版本添加了合并形状的功能,能够实现形状的联合、组合、拆分、相交和剪除,进一步增强了其绘图能力。

用过其他绘图软件的网友应该知道,绘制矢量图时有一个非常常用的功能——阵列。遗憾的是,直到2016版的PPT都没有将这个功能添加进去(可能有,作者没找到),难道是因为没有人需要这种功能吗?也许有网友的动手能力比较强,直接复制后再对齐,非常暴力。作者属于比较懒的,像这种规则的排列是懒得动手的。而且,常用的阵列有三种:矩形、环形、环形并旋转。第一种可以暴力解决,后两种呢?没有一定的三角函数的知识是解决不了的。因此,作者认为,用程序自动阵列是很有必要的。有高手能用VBA解决,缺点是VBA得跟着文档走,PPT默认还会禁用宏,一般用户不打开开发工具还找不着它。在PPT的功能界面添加这么一个功能,既方便又实用。

无图无真相,先上图

▲三种不同类型的阵列

▲PPT阵列加载项

“阵列”选项卡完全和内置的选项卡融为一体了,不知道的人还以为是软件自带的功能呢,哈哈。本着能网上下载就不自己动手的原则,先附上下载链接(需要.net 4.0)。

下面开始教程:

序言:作者用的是VS2017,PowerPoint 2016,理论上别的版本也适合。

1、安装开发环境

▲添加Office/SharePoint开发

2、新建PowerPoint 2013和2016 VSTO外接程序

作者用的是C#,.Net版本需要4.0以上,选中PowerPoint 2013和2016 VSTO外接程序,给你的工程取个名字,如PowerPointArray,单击确定。

3、界面设计

3.1 添加一个Ribbon界面,项目——添加新项——功能区(可视化设计器),随便起个名称,如RibbonArray.cs,如图

3.2 界面设计

单击TadAddIns(内置),在右边修改成属性。ControlldType改成Custom,Label改成阵列。单击group1,其Label改成阵列。在阵列这个group上拉控件:

Dropdown——1个,用来存放不同的阵列类型,添加3个Items,Label分别设置为矩形、环形、环形(旋转)

EditBox——4个,用来给用户输入参数

Button——1个,生成阵列

最终效果如下图

4、开始写代码

4.1 双击Label为“类型”的DropDown控件,生成SelectionChanged事件,主要用来更改四个EditBox的Label。

private void dropDown1_SelectionChanged(object sender, RibbonControlEventArgs e)

{

        switch (dropDown1.SelectedItemIndex)

        {

            case 0:

                editBox1.Label = "水平间距";

                editBox2.Label = "水平数量";

                editBox3.Label = "竖直间距";

                editBox4.Label = "竖直数量";

                break;

            case 1:

            case 2:

                editBox1.Label = "角度";

                editBox2.Label = "数量";

                editBox3.Label = "中心X";

                editBox4.Label = "中心Y";

            break;

            default:

                break;

        }

   }

在RibbonArray_Load事件中添加如下代码,让加载项加载时选中矩形的阵列类型。

dropDown1.SelectedItemIndex = 0;

4.2双击Label为“生成”的Button控件,生成Click事件,为生成阵列的主程序,下面以矩形阵列为例介绍,各行的含义在代码中注释了。

try

{

    if (dropDown1.SelectedItemIndex == 0)

    {

        float xInterval = Convert.ToSingle(editBox1.Text) * 72 / 2.54f;//水平方向间距,默认单位为磅,需要转换成厘米

        int xNum = Convert.ToInt32(editBox2.Text);//水平方向阵列个数

        float yInterval = Convert.ToSingle(editBox3.Text) * 72 / 2.54f;//竖直方向间距,默认单位为磅,需要转换成厘米

        int yNum = Convert.ToInt32(editBox4.Text);//竖直方向阵列个数

        Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange.Left -= 12;//选中图形的位置向左移12磅,复制时会自动加12

        Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange.Top -= 12;//选中图形的位置向上移12磅,复制时会自动加12

        float xOriginal = Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange.Left;//保存下选中图形的初始位置

        float yOriginal = Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange.Top;

        //开始循环复制

        for (int x = 1; x <= xNum; x++)

        {

            for (int y = 1; y <= yNum; y++)

                {

                        if (x == 1 && y == 1) continue;//已经有一个了,少复制一个了

                        Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange.Duplicate();//复制一个,水平和竖直方向会自动加12

                        Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange.Left = xOriginal + (x - 1) * xInterval;//更改原始图的位置,为下一次复制做准备

                        Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange.Top = yOriginal + (y - 1) * yInterval;

                }

        }

        //最后一个移到了右下角的位置,不需要复制了,直接手动加上12

        Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange.Left += 12;

        Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange.Top += 12;

     }

    else

    {

        //其他阵列代码

    }

}

catch (Exception ex)

{

    System.Windows.Forms.MessageBox.Show(ex.Message);

}

单击启动,此时会自动启动PPT,需要在此之前没有PPT软件没运行。输入合适的参数,点生成就能直接生成阵列了。效果如下图。

环形(旋转)阵列就属于数学问题了,大家可以自己琢磨,再次附上下载连接

作者编程能力很差,也不规范,本着能解决问题的原则写代码,高手勿嘲笑,有需要的直接下载。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。

相关文章

关键词:Win10教程Win10学院

软媒旗下网站: IT之家 辣品 - 超值导购,优惠券 最会买 - 返利返现优惠券 iPhone之家 Win7之家 Win10之家 Win11之家

软媒旗下软件: 魔方 云日历 酷点桌面 Win7优化大师 Win10优化大师 软媒手机APP应用