在 Smalltalk Squeak 中绘制一个矩形

Drawing A Rectangle in Smalltalk Squeak

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

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

RectangleMorph new
    extent: 300@200;
    openInWorld

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

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

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

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

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

也可以创建您自己的 Morph subclass 并实现自定义 drawOn: 方法。但对于像显示矩形这样简单的东西来说,这就太过分了。