球拍的pict
有几个combinators for combining other pictures。这些文档包含一个关于其*-append
组合器如何工作的好表:
大多数这些例子都有意义。垂直和水平的第一个字母分别为v
或h
。第二个字母为l
,t
或r
表示纵向左/中/右,或t
c
b
表示水平机顶/中心/底部。
但是,这会遗漏htl-append
和hbl-append
。它们都不适合这种模式。此外,它们似乎都匹配表中的hb-append
。
那么,htl-append
和hbl-append
的用途是什么,它与hb-append
的区别如何?
答案 0 :(得分:4)
我在文档中写了这个例子,所以我想这是我的错,所以我会尝试回答这个问题。
这个例子没有很好地说明差异,因为它使用的是形状,而不是文字。
更改示例以使用text + shapes表明这些函数之间存在一些差异:
#lang racket
(require pict)
(inset
(cbl-superimpose
(hb-append 10
(frame (text "g" "Helvetica" 30))
(rectangle 10 10 #:border-width 2))
(hline 200 2))
10)
(blank 1 30)
(inset
(cbl-superimpose
(hbl-append 10
(frame (text "g" "Helvetica" 30))
(rectangle 10 10 #:border-width 2))
(hline 200 2))
10)
(blank 1 30)
(inset
(ctl-superimpose
(ht-append 10
(frame (text "i" "Helvetica" 30))
(rectangle 10 10 #:border-width 2))
(hline 200 2))
10)
(blank 1 30)
(inset
(ctl-superimpose
(htl-append 10
(frame (text "i" "Helvetica" 30))
(rectangle 10 10 #:border-width 2))
(hline 200 2))
10)
如果您运行此示例,您将获得4张显示不同案例的图片。根据字母的不同,由于上升/下降,您会得到不同的对齐方式。对于文档来说,显示一个与文本类似的示例可能会更有用。
如果你想混合图片和文字,使用l-
变体通常是有意义的,以避免图片突出的奇怪外观:
#lang racket
(require pict)
(hb-append 10
(text "hug" "Helvetica" 30)
(rectangle 20 20 #:border-width 2)
(text "hug" "Helvetica" 30))
(hbl-append 10
(text "hug" "Helvetica" 30)
(rectangle 20 20 #:border-width 2)
(text "hug" "Helvetica" 30))
答案 1 :(得分:0)