如何使用球拍拍照片

时间:2018-09-02 12:19:17

标签: racket

我是使用Racket的新手,并且有一个看起来很简单的问题。 基本上,我需要使用Racket制作场景/图片。我的第一步是我要在同一张图片中有一个月亮,草和一个背景。

应该/我可以使用E-SCENE还是应该只使用叠加层?

我一直在努力弄清楚这一点。每当我这样做时,月亮和背景就会合而为一,而背景和草又会像另外一个一样出现。这是我到目前为止(不使用空场景)的内容:

(require 2htdp/image)
(require 2htdp/universe)

(define rectangle1 (rectangle 450 400 "solid" "midnight blue"))
(define circle1 (circle 50 "solid" "WhiteSmoke"))
(place-image circle1 (/ 450 6) (* 400 .15) rectangle1)
(define rectangle2 (rectangle 450 30 "solid" "forest green"))
(place-image rectangle2 (/ 450 2) 400 rectangle1)
(define background (overlay rectangle2 circle1 rectangle1))

1 个答案:

答案 0 :(得分:0)

不要将place-image视为一种效果;可以将其视为一个接受数据并返回新数据的函数,就像+接受两个数字并返回一个数字一样。如果您假装+只接受2个数字,那么要将3个数字与+加在一起,则必须嵌套

(+ 1 (+ 2 3))

place-image函数仅合并2张图像,因此,以同样的方式嵌套上面的+调用以合并3个数字,将3张图像与place-image合并在一起,您必须< em>巢 place-image呼叫:

(place-image image1 x1 y1
             (place-image image2 x2 y2
                          image3))

对于您的代码,这意味着:

(place-image circle1 (/ 450 6) (* 400 .15)
             (place-image rectangle2 (/ 450 2) 400
                          rectangle1))

将这三个图像结合在一起以产生:

Nested place-image to combine 3 images

类似地,将更多的东西组合在一起,以获得数字:

(+ 1 (+ 2 (+ 3 (+ 4 5))))

对于图片:

(place-image image1 x1 y1
             (place-image image2 x2 y2
                          (place-image image3 x3 y3
                                       (place-image image4 x4 y4
                                                    image5))))

注意:对于电话号码,您通常不必这样做。 (+ 1 2 3 4 5)(+ 1 (+ 2 ...))一样好。