【问题标题】:Drawing A Rectangle in Smalltalk Squeak在 Smalltalk Squeak 中绘制一个矩形
【发布时间】:2016-04-09 19:26:32
【问题描述】:

给定一个矩形类中的两个整数变量'a'和'b',你如何绘制一个矩形? 我是 smalltalk 的新手,我正在学习它的课程。 谢谢!

【问题讨论】:

  • 我们需要了解您的 Smalltalk 方言,因为每个人的绘图都不同
  • 我不确定你所说的方言是什么意思 - 我正在使用 squeak smalltalk
  • 啊,是的,我明白了,对不起。

标签: smalltalk squeak


【解决方案1】:

Squeak 使用 Morphic 作为其默认 UI。所以最简单的事情就是创建一个Morph

RectangleMorph new
    extent: 300@200;
    openInWorld

同时评估所有三行。这将创建一个新的RectangleMorph 实例,将其范围设置为从300200 创建的Point(通过将消息@ 发送到300,参数为200),并且还发送它是openInWorld 消息,所以它出现在世界上。它将在屏幕左上角打开。我们可以向它发送带有另一个 Point 参数的 position: 消息,但您可以轻松地用鼠标指针抓住它并将其移动到任何您喜欢的地方。

在您的课程中,您可以使用a@b 创建范围点(假设ab 是矩形的宽度和高度,以像素为单位)。

Morphic 很好,因为它创建了可以交互操作的真实对象,例如通过 cmd-click 调出 Halo。如果你不想这样,你也可以直接在屏幕上绘画。例如:

Display fill: (0@0 extent: 300@200) fillColor: Color red.

... 其中Display 是一个全局Form 实例(包含一个Bitmap),指的是整个Squeak 显示。但由于该表达式只是将像素放在屏幕上,它们将很快被覆盖。相比之下,Morphs 知道如何在需要时重新绘制自己。

还可以创建自己的Morph 子类并实现自定义drawOn: 方法。但是对于像显示一个矩形这样简单的事情来说,这将是多余的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多