2周前,我创建了一个代码来插入图片,将它们放置到一个范围内并将它们调整到该范围。 代码完美无缺,我用它生成了100页的报告。
今天我想在另一个项目上再次运行它,图片到处都是。 图片来自同一台相机并具有相同数量的像素。
我已尝试过在此网站上讨论的许多选项,但没有任何效果。 我希望有人能找到这个问题。
代码:
var p1 = new Promise((resolve, reject) => {
// load google charts here
});
var p2 = new Promise((resolve, reject) => {
// fetch here
});
Promise.all([p1, p2]).then(values => {
drawsChartsAfterBothComplete();
});
答案 0 :(得分:3)
问题是你的照片旋转90度。访问位置和大小属性时,需要对旋转进行调整,如此
要确定图像是否旋转,请检查.ShapeRange.Rotation
属性
With FotoOverview
.ShapeRange.LockAspectRatio = msoFalse
If .ShapeRange.Rotation = 90! Or .ShapeRange.Rotation = 270! Then
.Height = RangeOverview.Width
.Width = RangeOverview.Height
.Top = RangeOverview.Top - (.Height - .Width) / 2#
.Left = RangeOverview.Left + (.Height - .Width) / 2#
Else
.Width = RangeOverview.Width
.Height = RangeOverview.Height
.Top = RangeOverview.Top
.Left = RangeOverview.Left
End If
End With
解释为何起作用
如果您的图片的旋转属性为!= 0,则Top,Left,Height,Width属性值适用于未旋转的图像。
示例,如果图像看起来像这样,其旋转属性= 90(或270)
然后它的Top,Left,Height,Width属性值实际上基于此
因此,要将其放置在范围上,您需要在范围位置计算图片大小和位置 ,但需要针对旋转进行调整,如代码所示