在Smalltalk吱吱声中绘制一个矩形

时间:2016-04-09 19:26:33

标签: smalltalk squeak

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

1 个答案:

答案 0 :(得分:6)

Squeak使用 Morphic 作为默认用户界面。所以最简单的方法是创建一个 Morph

RectangleMorph new
    extent: 300@200;
    openInWorld

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

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

Morphic 非常好,因为它可以创建可以交互操作的真实对象,例如:通过cmd单击以显示 Halo 。如果你不想要,你也可以直接在屏幕上画画。 E.g:

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

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

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