2016-04-09 9 views
2

заданы две целые переменные 'a' и 'b' в классе прямоугольника, как вы рисуете прямоугольник? Я новичок в smalltalk, и я изучаю его для курса. спасибо!Рисование прямоугольника в Smalltalk Squeak

+1

Нам нужно знать ваш диалект Smalltalk, потому что рисунки разные для каждого – Tobias

+0

им не уверен, что вы подразумеваете под диалектом - im, используя squeak smalltalk – Infested

+0

Ах да, вижу, извините. – Tobias

ответ

6

Squeak использует Morphic как пользовательский интерфейс по умолчанию. Так что проще всего было бы создать Morph:

RectangleMorph new 
    extent: [email protected]; 
    openInWorld 

Оцените все три строки сразу. Это создает новый экземпляр RectangleMorph, устанавливает его степень в Point, созданном из 300 и 200 (отправив сообщение @ в 300 с аргументом 200), а также посылает ему openInWorld сообщения, так что появляется в мире. Он откроется в верхнем левом углу экрана. Мы могли послать это сообщение position: с другим аргументом Point, но вы можете просто просто захватить его указателем мыши и переместить его в любом месте.

В вашем классе вы можете использовать [email protected] для создания точки протяженности (предполагается, что a и b - ширина и высота прямоугольника в пикселях).

Morphic приятно, потому что он создает реальные объекты, с которыми вы можете манипулировать интерактивно, например. с помощью cmd-click для вызова Halo. Если вы этого не хотите, вы также можете рисовать на экране напрямую. Например .:

Display fill: ([email protected] extent: [email protected]) fillColor: Color red. 

... где Display глобальная Формы экземпляр (содержащий Bitmap) ссылается на весь дисплей писка. Но поскольку это выражение просто помещает пиксели на экран, они будут быстро перезаписаны. Morphs, напротив, умеют перерисовывать себя, когда это необходимо.

Также возможно создать свой собственный подкласс Morph и реализовать пользовательский метод drawOn:. Но это было бы излишним для чего-то столь же простого, как показать прямоугольник.