gpt4 book ai didi

smalltalk - 容器时如何重新缩放 subMorph?

转载 作者:行者123 更新时间:2023-12-04 19:25:57 26 4
gpt4 key购买 nike

我正在探索 Squeak,在 MacOS 中发布 5.2。

我正在 RectangleMorph 'r' 内绘制线条(PolygonMorph)。当我翻译 'r' 时,线条会平移,但是当我重新缩放 'r' 时,线条不会重新缩放。

运行下面的剪辑。然后使用 Halo 平移并调整矩形“r”的大小。您将看到行 'p' 被翻译但未重新缩放。

r := RectangleMorph new.
"[Pharo] r:= Morph.new."
r extent: 500@500.
r openInWindow.

p := PolygonMorph
vertices: {(r left)@(r top). (r right)@(r bottom)}
color: Color white borderWidth: 2 borderColor: Color white.

r addMorph: p.

我怎样才能让 'p' 重新缩放?

再见

最佳答案

这可能不是您正在寻找的完整答案,但分享我所做的,可能会帮助您在有趣的问题上取得一些进展。

  • 我不是 Squeak(或 Pharo)用户,所以我从网上下载了 Squeak。
  • 将您的代码粘贴到工作区中并执行它。
  • 重现您观察到的行为:调整矩形大小对其多边形子变形没有影响。
  • 弹出矩形菜单并看到“添加光环”项。
  • 写了 'add halo'某处并右键单击以使用该文字带来所有方法。
  • 找到 #addHalo:作为菜单项的关联消息。
  • 插入了 halt调试 #addHalo: .
  • Cmd+点击带光环调试,直到发现resize句柄会发送addGrow:with:到变形。
  • 然后我看到了addGrow:with:发送 setExtentFromHalo:并且这会发送 extent: .

  • 我的结论是你需要一个新的 RectangleMorph 子类当它收到 setExtentFromHalo: 时,按比例调整其所有子变形的大小.一些关于
    ScalableRectangleMorph >> #setExtentFromHalo: aPoint
    current := self extent.
    super setExtentFromHalo: aPoint.
    scale := self extent - current / current.
    self submorphsDo: [:m | m extent: (m extent * scale) rounded]

    试试这个(我还没有),让我们知道它是怎么回事。

    关于smalltalk - 容器时如何重新缩放 subMorph?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57269261/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com