首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shape.Top和Shape.Left问题

Shape.Top和Shape.Left问题
EN

Stack Overflow用户
提问于 2019-01-17 06:51:06
回答 2查看 1.3K关注 0票数 0

我有一些代码可以查看用户可以编辑的线的位置。编辑此行的目的是从到目前为止有效的绘图计划中获得粗略的测量结果。我正在努力通过记录测量到的位置来使它更具交互性。

这是问题所在。当这个形状(连接器弯头)在机柜和接入点上时,它使用shape.top和shape.left (下面的代码)以点为单位记录其位置。当我调整这一行的大小以将接入点的一端放在另一个接入点上时,机柜的位置也发生了变化,即使它没有移动。我确实注意到图上的比例、高度和宽度发生了变化,但我不知道为什么这会影响初始点。

值得注意的是,当您旋转弯头连接器时,宽度和高度的值也会随之旋转。这意味着有时高度是上下变化的,有时它是您期望的宽度值。仍然,只有当连接器旋转180度时,左侧位置才保持不变。

缩放高度/宽度与顶部/左侧的值之间是否存在关系?

代码语言:javascript
复制
Sub Measure()

Set sp = ActiveSheet.Shapes("Measurement")

Msgbox(sp.Top & "//" & sp.Left)

end sub

编辑:所以我意识到我提到了很多关于这个程序的内容,真正的问题是为什么左上角的测量值会发生变化,而左上角在屏幕上保持不变?并且仅在270/90旋转时(根据拖动线的方式自动发生)

添加屏幕截图(测量值在顶部然后向左) This is the first screen shot with a 270 rotation This is the second, notice the top left stayed stationary but the points changed下一组是180/0旋转(形状自动旋转,否则我会将其锁定并完成)。Rotated 180 first screen shot Rotated 180 second screen shot

EN

回答 2

Stack Overflow用户

发布于 2019-01-17 16:03:22

我很同情你的问题认识,我不理解这个现象,但经过测试,似乎即使旋转了图形,原始坐标也是保留的。这是因为即使再次执行旋转,也会通过原始坐标值执行旋转。如果人为地对齐位置,坐标会相应地移动。我对它进行了如下测试。

代码语言:javascript
复制
Sub Measure()
Dim rngT As Range
Dim sp As Shape
Set sp = ActiveSheet.Shapes("Measurement")

'MsgBox (sp.Top & "//" & sp.Left)
Set rngT = Range("k" & Rows.Count).End(xlUp).Offset(1, 0)
rngT = sp.Top
rngT.Offset(, 1) = sp.Left
End Sub

Sub test()
    Dim sp As Shape
    Dim Ws As Worksheet
    Dim vDB
    Dim i As Integer, t As Single, l As Single
    Dim r As Integer
    vDB = Range("k2", Range("L" & Rows.Count).End(xlUp))

    Set Ws = ActiveSheet
    r = UBound(vDB, 1)
    For i = 1 To r
        t = vDB(i, 1)
        l = vDB(i, 2)
        Set sp = Ws.Shapes.AddShape(msoShapeRectangle, l, t, 10, 10)
    Next i


End Sub
票数 0
EN

Stack Overflow用户

发布于 2019-01-17 23:37:55

我想通了,伙计们。

因此,在方向0或180上,Shape.top和Shape.Left提供准确一致的测量结果。

在90或270中,必须调整顶部和左侧,以提供准确一致的测量结果。

代码是Shape.Top-((Shape.Width-Shape.Height)/2)和Shape.Left+((Shape.Width-Shape.Height)/2)

(注意:此调整仅在对象旋转90或270//Shape.Rotation时适用)

此外,此处使用的形状是弯头连接件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54226575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档