是什么让我的图像看起来有一半的宽度?

问题描述 投票:0回答:1

我试图使用初学者语言中的 place-images 将一个垂直定位的矩形和另一个对象放置在一个空场景上。然而,当我运行该函数时,当矩形的宽度被设置为等于场景的宽度时,它只在水平方向上占据了一半的场景。

我用Stepper检查了我的代码的情况,发现图像宽度减半的地方,但我不知道为什么。可能是和我不是很熟悉的弊端有关。between these two steps the width halves

下面是完整的代码。

(require 2htdp/image)

(define WIDTH 400)
(define HEIGHT 300)
(define HMAX 100)
(define SCENE (empty-scene WIDTH HEIGHT))

(define-struct vcham [x h c])
(define c (make-vcham 0 100 "white"))

(define (render ch)
  (place-images (list (rectangle (* 1 WIDTH (/ (vcham-h ch) HMAX)) 50 "solid" "maroon")
                      (rectangle 1 1 "solid" "blue"))
                (list (make-posn 0 0) (make-posn 20 20))
                SCENE))

(render c)

我已经尽可能地简化了这段代码,所以才有了1×1的矩形。我也对优雅的替代方案感兴趣,但最感兴趣的是找出为什么会发生这种情况。

racket racket-student-languages
1个回答
3
投票

place-images 是像 place-image :

将图像放置在场景中,并将其 中心 在坐标(x,y)和 剪裁所得图像 使其与场景的大小相同。坐标是相对于场景左上角的。

您可以改变 (make-posn 0 0)(make-posn 200 25)或尝试 place-images/align

(define (render ch)
  (place-images/align (list (rectangle (* 1 WIDTH (/ (vcham-h ch) HMAX)) 50 "solid" "maroon")
                      (rectangle 1 1 "solid" "blue"))
                (list (make-posn 0 0) (make-posn 20 20))
                "left" "top" SCENE))
© www.soinside.com 2019 - 2024. All rights reserved.