设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3732|回复: 3
打印 上一主题 下一主题

【OneKeyTools源代码分享1】EMF导入

[复制链接]
跳转到指定楼层
1#
发表于 2016-2-22 18:07:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 只为设计 于 2016-2-27 16:48 编辑

OneKeyTools是我于2015年1月18日开始着手开发,由于我是开发零基础,所以这里得感谢儒道佛(潘淳)的基础技术指导,使最开始面对代码头疼的我不至于被吓跑。从个人切实感受来说,每个学习阶段都有需要面对的难题。菜鸟需要的是入门,高手需要的是更专业和全面的开发能力。作为过来人,特别感谢佛爷,感谢各位支持我的朋友,最需要感谢的是网上很多默默无名的大拿们,很多代码我是借鉴他们以前发布的博客、回帖等。这也是我发布【OneKeyTools源代码分享】系列的初衷。
今天首先分享的是OK的第一个功能,OK之路由这个功能而展开。

【EMF导入】这个功能主要用于AI素材导入PPT。由于手动操作需要打开选择性粘贴选EMF,并进行两次解除组合,删除透明背景,很是繁琐。通过这个功能,可以实现一键化导入,简单又方便。


【1】全部代码↓

  1. if (forms.Clipboard.ContainsData("EnhancedMetafile"))
  2. {
  3.         PowerPoint.Selection sel = app.ActiveWindow.Selection;
  4.         app.ActiveWindow.View.PasteSpecial(PowerPoint.PpPasteDataType.ppPasteEnhancedMetafile);
  5.         sel.ShapeRange.Ungroup().Ungroup().Select();
  6.         sel.ShapeRange[1].Delete();
  7. }
  8. else
  9. {
  10.         forms.MessageBox.Show("请先复制素材");
  11. }
复制代码


【2】核心代码↓
根据我的心得,最开始菜鸟无论看见多简单的代码,都会发晕。所以我将核心代码提取出来↓
  1. app.ActiveWindow.View.PasteSpecial(PowerPoint.PpPasteDataType.ppPasteEnhancedMetafile);
复制代码
↑这段代码就是核心中的核心。正如我们在PPT中操作一样,打开选择性粘贴对话框,选中emf图片后粘贴到PPT中。

  1. PowerPoint.Selection sel = app.ActiveWindow.Selection;
  2. sel.ShapeRange.Ungroup().Ungroup().Select();
复制代码
↑这个步骤,是模拟PPT中的操作:进行2次解除组合,EMF图片就转为矢量形状了。但是此时通常也会生成一张透明背景,那么要删除掉,所以接触组合后要记得选中

  1. sel.ShapeRange[1].Delete();  
复制代码
↑由于透明背景通常位于最底层,而用代码选中时,最底层的图层在ShapeRange的序号是1。所以此时删除ShapeRange[1]即可。
以上就是核心代码的分析。那么光有核心代码还不够。比如剪贴板里如果没有EMF图片怎么办?所以要加一个判断

【3】判断代码↓
  1. if (forms.Clipboard.ContainsData("EnhancedMetafile"))
复制代码
↑加上判断后,当用户忘记先复制素材,或者复制的素材不支持EMF时,就会提示。如果符合条件,则开始上文的核心代码


本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅
2#
发表于 2016-2-22 19:37:10 来自手机 | 只看该作者
老爷威武,受教了
来自: 微社区
3#
发表于 2016-2-22 20:52:34 | 只看该作者
感谢小师叔,献花,致敬~~~

点击这里给我发消息

4#
发表于 2016-2-23 10:57:18 | 只看该作者
谢谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-26 14:03 , Processed in 0.090890 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表