none
关于OLE嵌入WORD的一个疑问 RRS feed

  • 问题

  • 首先感谢微软的努力,现在可以有一个中文提问的平台。

    我目前写一个OLE服务器程序,主要目的是在MS WORD中嵌入一种特殊绘制的图形。但我发现OLE中的绘图好像不支持GDI+?我之前尝试了将GDI+绘制的图形转成WMF然后在OLE绘图函数中播放,虽然可以工作,但是显示在WORD中的图形不是很圆润,路径转换的时候似乎是把光滑曲线变成了若干个直线段了。

    我注意到同样作为OLE服务器程序,MS Office的各个程序之间不存在这样的问题,比如我把EXCEL制作的图表作为OLE对象嵌入到WORD中的时候,WORD中显示的EXCEL对象外观无变化,很圆润。

    希望能得到答复,感谢微软客服的工作!

    2016年4月27日 23:33

全部回复

  • 补充一下:我现在所用的开发工具是VS2008,程序是基于MFC的

    2016年4月27日 23:34
  • 你好,

    感谢你在C++论坛分享你的问题.

    你尝试过把WMF格式(没有做过转换的WMF格式)的资源,放到OLE中吗?如果这样做也会出现线条不平滑吗?

    根据我的查找,这边有个GDI+结合OLE database的demo。不知道这个能不能帮助到你.http://www.codeproject.com/Articles/224126/A-CWtlPicture-Control-Based-on-GDIplus

    >>但我发现OLE中的绘图好像不支持GDI+?

    关于这句话,我还没有找到官方的文档说明.


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. <br/> Click <a href="http://support.microsoft.com/common/survey.aspx?showpage=1&scid=sw%3Ben%3B3559&theme=tech"> HERE</a> to participate the survey.

    2016年4月28日 5:22
    版主
  • 我没有尝试过把没有做过转换的WMF放在其中。您推荐的示例不是一个OLE服务器程序,所以我没能通过它获得有益的提示。我写的是一个OLE服务器程序,是OLE控件的生成者,而不是调用者。版主是否误会了我的问题?

    MS WORD / EXCEL 等是既可以作为OLE服务也可以作为容器的。举例来说,我们平时使用它们的时候,经常会在EXCEL中绘制一些图表,如曲线线图、圆饼图、柱状图等等,然后把这些图表插入到一个WORD文档中,当在WORD中双击这些EXCEL生成的图表时可以打开重新编辑。这些特性是OLE复合文档的特性。

    目前我开发的东西相当于上述例子中的EXCEL。

    我的问题是,EXCEL所绘制的图表在WORD中显示的时候,曲线很光滑,因为EXCEL生成的图表有色彩渐变这样的特性,所以我肯定它所采用的绘图命令不局限于GDI接口,应该是用到了GDI+或者更高级的接口。现在我在开发的程序中用到了GDI+,但生成的OLE对象在WORD中无法显示,无奈只能把GDI+的绘图流转换为WMF,然而转换之后出现了线条不平滑这样的问题,此处线条不平滑不是说有锯齿(走样),而是本来圆滑的路径(具体来说,在GDI+中是GraphicsPath),例如一个圆,转为WMF之后变成由直线围成的多边形了。


    • 已编辑 Xun Zhou 2016年5月2日 7:11
    2016年5月2日 7:10
  • 一开始对OLE的作用理解错误,谢谢你讲的这么详细。

    >>只能把GDI+的绘图流转换为WMF,然而转换之后出现了线条不平滑这样的问题,此处线条不平滑不是说有锯齿(走样),而是本来圆滑的路径(具体来说,在GDI+中是GraphicsPath),例如一个圆,转为WMF之后变成由直线围成的多边形了。

    也就是说问题是GDI+把图片转成WMF之后,出现线条不平滑。根据我的了解,image这个对象中save函数是不支持保存WMF格式的。需要中间转换成metafile object,具体转换的方式可以参考这个代码。http://www.codeproject.com/Articles/6879/How-to-use-GDI-to-save-image-in-WMF-EXIF-or-EMF-fo


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. Click HERE to participate the survey.

    2016年5月2日 9:25
    版主