在 Smalltalk Squeak 中绘制一个矩形
Drawing A Rectangle in Smalltalk Squeak
给定一个矩形class中的两个整型变量'a'和'b',如何绘制矩形?
我是 smalltalk 的新手,正在学习它的课程。
谢谢!
Squeak 默认使用 Morphic UI。所以最简单的事情就是创建一个 Morph:
RectangleMorph new
extent: 300@200;
openInWorld
一次评估所有三行。这将创建一个新的 RectangleMorph
实例,将其范围设置为从 300
和 200
创建的 Point
(通过将消息 @
发送到 300
参数为 200
),并向其发送 openInWorld
消息,使其出现在世界中。它将在屏幕左上角打开。我们可以用另一个 Point
参数向它发送 position:
消息,但您可以轻松地用鼠标指针抓住它并将其移动到任何您喜欢的地方。
在您的 class 中,您可以使用 a@b
创建范围点(假设 a
和 b
是矩形的宽度和高度(以像素为单位)。
Morphic 很好,因为它创建了可以交互操作的真实对象,例如通过 cmd-click 调出 Halo。如果你不想这样,你也可以直接在屏幕上作画。例如:
Display fill: (0@0 extent: 300@200) fillColor: Color red.
... 其中 Display
是一个全局 Form 实例(包含一个 Bitmap)引用整个 Squeak 显示.但由于该表达式只是将像素放在屏幕上,它们将很快被覆盖。 变形,相比之下,知道如何在需要时重绘自己。
也可以创建您自己的 Morph subclass 并实现自定义 drawOn:
方法。但对于像显示矩形这样简单的东西来说,这就太过分了。
给定一个矩形class中的两个整型变量'a'和'b',如何绘制矩形? 我是 smalltalk 的新手,正在学习它的课程。 谢谢!
Squeak 默认使用 Morphic UI。所以最简单的事情就是创建一个 Morph:
RectangleMorph new
extent: 300@200;
openInWorld
一次评估所有三行。这将创建一个新的 RectangleMorph
实例,将其范围设置为从 300
和 200
创建的 Point
(通过将消息 @
发送到 300
参数为 200
),并向其发送 openInWorld
消息,使其出现在世界中。它将在屏幕左上角打开。我们可以用另一个 Point
参数向它发送 position:
消息,但您可以轻松地用鼠标指针抓住它并将其移动到任何您喜欢的地方。
在您的 class 中,您可以使用 a@b
创建范围点(假设 a
和 b
是矩形的宽度和高度(以像素为单位)。
Morphic 很好,因为它创建了可以交互操作的真实对象,例如通过 cmd-click 调出 Halo。如果你不想这样,你也可以直接在屏幕上作画。例如:
Display fill: (0@0 extent: 300@200) fillColor: Color red.
... 其中 Display
是一个全局 Form 实例(包含一个 Bitmap)引用整个 Squeak 显示.但由于该表达式只是将像素放在屏幕上,它们将很快被覆盖。 变形,相比之下,知道如何在需要时重绘自己。
也可以创建您自己的 Morph subclass 并实现自定义 drawOn:
方法。但对于像显示矩形这样简单的东西来说,这就太过分了。