我正在尝试设计一个名为add-frame的函数,它接受一张图像,并在所有四个边都用一个像素的黑色边框包围它。这就是我所拥有的:
(define (horizontal-line x)
(line x 0 "black"))
(define (vertical-line x)
(line 0 x "black"))
(define (add-left-border height design color)
(overlay/align "left" "top"
(vertical-line height)
(square height design color)))
(define (add-right-border height design color)
(overlay/align "right" "top"
(vertical-line height)
(square height design color)))
(define (add-top-border height design color)
(overlay/align "right" "top"
(horizontal-line height)
(square height design color)))
(define (add-bottom-border height design color)
(overlay/align "right" "bottom"
(horizontal-line height)
(square height design color)))
(define (add-frame height design color)
(overlay (square height design color)
(add-left-border height design color)
(add-right-border height design color)
(add-top-border height design color)
(add-bottom-border height design color)))当我运行"add-frame“时,返回的是一个只有左边框的正方形图像。如何使边框的其余部分显示在返回的正方形上?
发布于 2016-01-25 04:29:16
此表达式
(overlay/align "left" "top"
(vertical-line height)
(square height design color))将正确地在正方形的左侧添加一条垂直线。
这是一个表达式
(overlay/align "right" "top"
(vertical-line height)
(square height design color))将正确地在正方形的右侧添加一条垂直线。
然而,如果你把这两个图像放在一起,那么由于它们的大小相同,你只能看到顶部的那个。
要解决这个问题(部分地),你可以在正方形的另一边添加一条透明线。
更好的解决方案是传递要添加线条的图像。
也就是说,将add-left-border更改为:
(define (add-left-border height design color image)
(overlay/align "left" "top"
(vertical-line height)
image))这将在图像顶部添加左侧边框。
如下所示:
(define (horizontal-line x)
(line x 1 "black"))
(define (vertical-line x)
(line 1 x "black"))
(define (add-left-border height design color image)
(overlay/align "left" "top"
(vertical-line height)
image))
(define (add-right-border height design color image)
(overlay/align "right" "top"
(vertical-line height)
image))
(add-left-border 80 "solid" "red"
(add-right-border 80 "solid" "red"
(circle 40 "solid" "red")))注意:最好在镜像上使用image-width和image-height,以便自动获得正确的大小。
https://stackoverflow.com/questions/34972150
复制相似问题