首页 - 玉溪 -时评 -社会 -民生 -报料 -网视 -公益 -房产 -车讯 -导购 -教育 -快讯 -培训 -国内 -国际 -文娱 -小记者
您所在的位置:中国玉溪网 > 导购
IT之家学院:微软PowerPoint绘制阵列教程(附下载)
2019/8/6 19:24:00  来源:  

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

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

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

无图无真相,先上图

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

▲三种不同类型的阵列

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

▲PPT阵列加载项

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

下面开始教程:

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

1、安装开发环境

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

▲添加Office/SharePoint开发

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

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

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

3、界面设计

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

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

3.2 界面设计

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

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

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

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

Button——1个,生成阵列

最终效果如下图

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

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之家学院:微软PowerPoint绘制阵列教程(附下载)

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

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


相关阅读:
去哪学模特 https://www.modelschool.cn/
  精彩图片
贝恩预计到2020年过半中国个人奢侈品消费会发生改变
贝恩预计到2020年过半中国个人奢侈品消费会发生改变
男人想结婚是什么心理
男人想结婚是什么心理
  热点专题
·IT之家学院:微软PowerPoint绘制阵列教程(附下载)
·周润发替身文祥资料曝光 长相酷似一度让人认错(组图)
·每人赔偿7700美元!特斯拉与126位挪威车主达成和解
·中国大力纠正损害群众利益不正之风
·喝一口冰镇可乐 重庆一中年男子中暑倒地(图)
·洋奶粉首次被暂停在华注册资格
·因此须作出微妙平衡,模具设计、制造
·湖南“大二女生陷传销溺亡”案续:涉案传销组织被摧毁
·他把车停在路边,要害在党员领导干部这个“关键少数”
·陆幽宫外孕男主角曝光?
  热门新闻
·IT之家学院:微软PowerPoint绘制阵列教程(附下载)
·周润发替身文祥资料曝光 长相酷似一度让人认错(组图)
·日本央行“放水”预期持续升温
·每人赔偿7700美元!特斯拉与126位挪威车主达成和解
·女子兼任村医、老师、支书、主任:没觉得自己是官
·村民开车开进水渠 男子跳入水中勇救一家四口
·广州从化一男子坚信世界末日患上精神病
·QC+Qi智能识别,JDB旗舰店10W快充无线充电器69元
·阿富汗首都使馆区附近发生爆炸 伤亡不明
·上海青少年日均睡眠时间减少 电子阅读增幅显著
Copyright rqja.com.cn All Rights Reserved.
本网站所刊登的各种新闻﹑信息和各种专题专栏资料,均为中国玉溪网版权所有,未经协议授权,禁止下载使用。
台广证002号  浙ICP备09050798  浙新办(2002)11号