1.7 简单的绘图: "draw.rkt"
(require htdp/draw) | package: htdp-lib |
本教学包提供两类函数:一类用于绘制画布,另一类用于对画布事件做出反应。
注意:该库已被废弃;请改用2htdp/image(可能与2htdp/universe结合)。你可以继续配合《程序设计方法》第一版使用本库,但请考虑换用《程序设计方法》第二版。
1.7.1 在画布上绘图
DrawColor: (and/c symbol? (one-of/c 'white 'yellow 'red 'blue 'green 'black)) 保证至少提供这六种颜色。如果需要其他颜色,请猜测!例如,'orange有效, 但是'mauve无效。如果使用不认识的颜色调用(绘图)函数,会抛出错误。
函数
(start/cartesian-plane width height) → true
width : number? height : number?
函数
(draw-circle p r c) → true
p : posn? r : number? c : DrawColor
函数
(draw-solid-disk p r c) → true
p : posn? r : number? c : DrawColor
函数
(draw-solid-rect ul width height c) → true
ul : posn? width : number? height : number? c : DrawColor
函数
(draw-solid-line strt end c) → true
strt : posn? end : posn? c : DrawColor
函数
(draw-solid-string p s) → true
p : posn? s : string?
函数
(sleep-for-a-while s) → true
s : number?
对于每个draw-(绘制)函数,教学包也提供对应的clear-(清除)函数:
函数
(clear-circle p r c) → true
p : posn? r : number? c : DrawColor
函数
(clear-solid-disk p r c) → true
p : posn? r : number? c : DrawColor
函数
(clear-solid-rect ul width height c) → true
ul : posn? width : number? height : number? c : DrawColor
函数
(clear-solid-line strt end c) → true
strt : posn? end : posn? c : DrawColor
函数
(clear-solid-string p s) → true
p : posn? s : string?
1.7.2 与画布的交互
函数
(wait-for-mouse-click) → posn?
函数
(get-key-event) → (or/c false DrawKeyEvent)
DrawWorld:为了能正确的进行交互,使用本教学包需要你提供DrawWorld的数据定义。 原则上,此数据定义没有任何限制。你甚至可以隐式地定义,即使这违反了设计诀窍。
以下函数允许程序对画布中的事件做出反应。
函数
(on-key-event change) → true
change : (-> DrawKeyEvent DrawWorld DrawWorld)
函数
(on-tick-event tock) → true
tock : (-> DrawWorld DrawWorld)
函数
(end-of-time) → DrawWorld