Office中国论坛/Access中国论坛
标题:
【OneKeyTools源代码分享1】EMF导入
[打印本页]
作者:
只为设计
时间:
2016-2-22 18:07
标题:
【OneKeyTools源代码分享1】EMF导入
本帖最后由 只为设计 于 2016-2-27 16:48 编辑
O
neKeyTools
是我于2015年1月18日开始着手开发,由于我是开发零基础,所以这里得感谢儒道佛(潘淳)的基础技术指导,使最开始面对代码头疼的我不至于被吓跑。
从个人切实感受来说,每个学习阶段都有需要面对的难题。菜鸟需要的是入门,高手需要的是更专业和全面的开发能力。作为过来人,特别感谢佛爷,感谢各位支持我的朋友,最需要感谢的是网上很多默默无名的大拿们,很多代码我是借鉴他们以前发布的博客、回帖等。这也是我发布【OneKeyTools源代码分享】系列的初衷。
今天首先分享的是OK的第一个功能,OK之路由这个功能而展开。
【EMF导入】这个功能主要用于AI素材导入PPT。由于手动操作需要打开选择性粘贴选EMF,并进行两次解除组合,删除透明背景,很是繁琐。通过这个功能,可以实现一键化导入,简单又方便。
【1】全部代码↓
if (forms.Clipboard.ContainsData("EnhancedMetafile"))
{
PowerPoint.Selection sel = app.ActiveWindow.Selection;
app.ActiveWindow.View.PasteSpecial(PowerPoint.PpPasteDataType.ppPasteEnhancedMetafile);
sel.ShapeRange.Ungroup().Ungroup().Select();
sel.ShapeRange[1].Delete();
}
else
{
forms.MessageBox.Show("请先复制素材");
}
复制代码
【2】核心代码↓
根据我的心得,最开始菜鸟无论看见多简单的代码,都会发晕。所以我将核心代码提取出来↓
app.ActiveWindow.View.PasteSpecial(PowerPoint.PpPasteDataType.ppPasteEnhancedMetafile);
复制代码
↑这段代码就是核心中的核心。正如我们在PPT中操作一样,打开选择性粘贴对话框,选中emf图片后粘贴到PPT中。
PowerPoint.Selection sel = app.ActiveWindow.Selection;
sel.ShapeRange.Ungroup().Ungroup().Select();
复制代码
↑这个步骤,是模拟PPT中的操作:进行2次解除组合,EMF图片就转为矢量形状了。但是此时通常也会生成一张透明背景,那么要删除掉,所以接触组合后要记得选中
sel.ShapeRange[1].Delete();
复制代码
↑由于透明背景通常位于最底层,而用代码选中时,最底层的图层在ShapeRange的序号是1。所以此时删除ShapeRange[1]即可。
以上就是核心代码的分析。那么光有核心代码还不够。比如剪贴板里如果没有EMF图片怎么办?所以要加一个判断
【3】判断代码↓
if (forms.Clipboard.ContainsData("EnhancedMetafile"))
复制代码
↑加上判断后,当用户忘记先复制素材,或者复制的素材不支持EMF时,就会提示。如果符合条件,则开始上文的核心代码
上一篇:
BCS+A法制作逼真墨滴
下一篇:
【OneKeyTools源代码分享2】插入矩形
作者:
cky505473444
时间:
2016-2-22 19:37
老爷威武,受教了
作者:
露桥闻笛
时间:
2016-2-22 20:52
感谢小师叔,献花,致敬~~~
作者:
tmtony
时间:
2016-2-23 10:57
谢谢分享!
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3