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

Inf*_*ted 2 smalltalk squeak

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

Ber*_*erg 6

Squeak使用Morphic作为其默认UI.所以最简单的方法是创建一个变形:

RectangleMorph new
    extent: 300@200;
    openInWorld
Run Code Online (Sandbox Code Playgroud)

一次评估所有三条线.这产生一个新的RectangleMorph实例,设置其程度至Point创建从300200(通过发送消息@300与的参数200),并且还发送它的openInWorld,因此出现在世界消息.它将在左上角的屏幕角落打开.我们可以position:用另一个Point参数向它发送消息,但你可以轻松地用鼠标指针抓住它并随意移动它.

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

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

Display fill: (0@0 extent: 300@200) fillColor: Color red.
Run Code Online (Sandbox Code Playgroud)

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

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