2016-04-09 10 views
2

gegeben zwei Integer-Variablen 'a' und 'b' in einer Rechteck-Klasse, wie zeichnest du ein Rechteck? Ich bin neu zu Smalltalk und ich studiere es für einen Kurs. danke!Zeichnen eines Rechtecks ​​in Smalltalk Squeak

+1

Wir müssen Ihren Smalltalk-Dialekt kennen, denn das Zeichnen ist für jede – Tobias

+0

unterschiedlich. Ich bin mir nicht sicher, was Sie unter Dialekt verstehen - ich benutze Quietschen Smalltalk – Infested

+0

Ah ja, ich verstehe, tut mir leid. – Tobias

Antwort

6

Squeak verwendet Morphic als Standardbenutzeroberfläche. So wäre die einfachste Sache zu schaffen, eine Morph:

RectangleMorph new 
    extent: [email protected]; 
    openInWorld 

alle drei Zeilen auf einmal auswerten. Dadurch wird eine neue RectangleMorph Instanz setzt seine Ausdehnung auf eine erstellte Point von 300 und 200 (durch die Nachricht @-300 mit dem Argumente 200 Senden) und sendet sie auch die openInWorld Nachricht, so dass es in der Welt erscheint. Es wird in der oberen linken Bildschirmecke geöffnet. Wir hätten die position: Nachricht mit einem anderen Point Argument senden können, aber Sie können es einfach mit Ihrem Mauszeiger greifen und es überall hin verschieben, Sie bitte.

In Ihrer Klasse können Sie [email protected] verwenden, um den Ausdehnungspunkt zu erstellen (unter der Annahme a und b sind die Breite und Höhe des Rechtecks ​​in Pixeln).

Morphic ist nett, weil es reale Objekte erstellt, die Sie interaktiv bearbeiten können, z. Mit dem Befehl cmd-click wird ein Halo angezeigt. Wenn Sie das nicht möchten, können Sie auch direkt auf dem Bildschirm malen. Z.B .:

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

... wo Display eine globale Formular Instanz (enthaltend einen Bitmap) was dich auf den gesamten Squeak-Display ist. Aber da dieser Ausdruck nur Pixel auf den Bildschirm legt, werden sie schnell überschrieben. Morphs, im Gegensatz dazu wissen, wie man sich neu zu zeichnen, wann immer es nötig ist.

Es ist auch möglich, Ihre eigene Morph Unterklasse zu erstellen und eine benutzerdefinierte drawOn: Methode zu implementieren. Aber das wäre ein Overkill für etwas so einfaches wie das Zeigen eines Rechtecks.

Verwandte Themen