Racket Drawing Toolkit – 1

CI4Finora con Racket solo cose da terminale, come si usava anticamente quando ero giovane. Quando il ‘puter era in una stanza tutta sua con il condizionatore a palla e io avevo solo un terminale alfanumerico (OK, più d’uno, ma niente grafica).
Ma da oggi si cambia, visto il titolo?

Sono qui: [doc]/draw/index.html, roba dovuta a Matthew Flatt, Robert Bruce Findler e John Clements.
OK, si parte 😀

(require racket/draw)

The racket/draw library provides all of the class, interface, and procedure bindings defined in this manual.
E segue un elenco lungo così 😀
OK, si parte, qui: [doc]/draw/overview.html#(part._.Lines_and_.Simple_.Shapes)

Linee e forme semplici

To draw into a bitmap, first create the bitmap with make-bitmap, and then create a bitmap-dc% that draws into the new bitmap:

r0

Then, use methods like draw-line on the DC to draw into the bitmap. For example, the sequence

r1

draws an “X” on top of a smaller rectangle into the bitmap target. If you save the bitmap to a file with

(send target save-file "box.png" 'png)

the “box.png” contains the image

box

in PNG format.

😀 OK, dai, ma è come l’Hello World!
Troppo piccola? dai, pensa a Brunetta (a proposito c’è ancora vero, ultimamente si parla solo delle katsate di Matteo).

A line-drawing drawing operation like draw-line uses the DC’s current pen to draw the line. A pen has a color, line width, and style, where pen styles include 'solid, 'long-dash, and 'transparent. Enclosed-shape operations like draw-rectangle use both the current pen and the DC’s current brush. A brush has a color and style, where brush styles include 'solid, 'cross-hatch, and 'transparent.

Note: In DrRacket, instead of saving target to a file viewing the image from the file, you can use (require racket/gui) and (make-object image-snip% target) to view the bitmap in the DrRacket interactions window.
Di GUI se ne parlerà diffusamente a suo tempo, m’interessa e ci conto, nèh! 😀

For example, set the brush and pen before the drawing operations to draw a thick, red “X” on a green rectangle with a thin, blue border:

r2

e ottengo, come previsto,

box-c

To draw a filled shape without an outline, set the pen to 'transparent mode (with any color and line width). For example,

r3

che produce

box-e

By default, a bitmap-dc% draws solid pixels without smoothing the boundaries of shapes. To enable smoothing, set the smoothing mode to either 'smoothed or 'aligned:

r4

ed ecco

box-es

Per vedere le differenze conviene ingrandire le immagini, ma sapete come sono i grafici 😉

The difference between 'aligned mode and 'smoothed mode is related to the relatively coarse granularity of pixels in a bitmap. Conceptually, drawing coordinates correspond to the lines between pixels, and the pen is centered on the line. In 'smoothed mode, drawing on a line causes the pen to draw at half strength on either side of the line, which produces the following result for a 1-pixel black pen:

pict_5

but 'aligned mode shifts drawing coordinates to make the pen fall on whole pixels, so a 1-pixel black pen draws a single line of pixels:

pict_6

OK, come inizio niente male, anzi 😀 che poi dai racketeeers c’era da aspettarselo 😀 e poi tutto veramente elemntare 🙄 per adesso 😉

Continua, sarà lunga :mrgreen:

Posta un commento o usa questo indirizzo per il trackback.

Trackback

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: