我注意到当你在excel中复制一个范围(复制为图片 - 如屏幕上所示)并将其粘贴到PowerPoint中时,生成的图像不会100%缩放到原始图像(右键单击图像,转到格式设置并转到大小以查看比例信息)。
此外,此缩放在不同的计算机上有所不同(可能与图形卡有关)。如果您有不同版本的Office,则每台计算机的缩放也不同(即在Office 03中,缩放比原始版本的100%,在Office 07中,缩放比例为原始高度和宽度的约75%< ---这些值可能在你自己的电脑上有所不同。)
是否有一些押韵和推理如何由Office内部确定这些缩放?我问,因为我通过c#自动化这个复制+粘贴功能(使用互操作的东西)。我使用CopyAsPicture方法获取所选范围的高度x宽度,并将图像保存为.emf文件。然后,我使用之前存储的尺寸作为形状的尺寸将图像加载到PowerPoint形状中。它粘贴它没有错误,但当我将它与原生ctrl + c和excel粘贴的ctrl + v作为图片进行比较时,大小是不同的。我的结论是因为这个奇怪的缩放问题。
顺便说一下,在c#中,如果你告诉某个形状的大小为100x100,并插入它(使用形状的AddPicture方法),它实际上不会是PowerPoint中的100x100。如果你然后将那个图像复制并粘贴到油漆中以查看尺寸,它将完全不同(对于我的机器,它将它升级135%)。
任何人都知道发生了什么事?或者办公室如何决定这些扩展问题?
谢谢, 鲨
答案 0 :(得分:0)
我在我的逻辑中发现了一个缺陷:我不应该考虑缩放,而应该考虑绝对大小。我注意到的一件事是,无论缩放,通过本机复制和粘贴粘贴图像的大小在所有机器上的所有办公版本中都是一致的。通过进一步分析,我发现尺寸有两种确定方式:
1)如果您选择“复制为图像”并设置为“如屏幕所示”,我将图像的高度和宽度(以像素为单位)除以96(dpi),以获得图像的大小(以英寸为单位)。我相信这个DPI是Office使用的默认值。然后为了得到点,我需要将这个图像乘以72,因为我需要将它转换为PowerPoint在插入操作上所期望的单位。执行此操作后,通过我的代码的图像与本机程序的图像匹配。
2)如果您选择了“打印时显示”选项,我的原始方法就像我们上面讨论的那样使用元文件分辨率来帮助获得大小。
要点:
对于屏幕上显示的
x = (metafile.height / 96) * 72
y = (metafile.width / 96) * 72
打印时显示
x = (metafile.height / metafile.HorizontalResolution) * 72
y = (metafile.height / metafile.VerticalResolution) * 72