以下函数包括collage
的使用,仅用于转换将形状/形状转换为元素。
makeSlider : Element -> Form -> Element
makeSlider sliderShape sliderBarForm =
let
sliderBar =
--convert sliderBarForm from type Form to Element
collage 1000 1000 [(move (0,0) sliderBarForm)]
in
layers [sliderShape, sliderBar]
有没有一种方法可以提取Form的维度,比如Graphics.Element.sizeOf
,这样makeSlider
函数就不需要知道sliderBarForm
的显式维度?
或者是否存在toElement
函数,使得
collage 1000 1000 [(move (0,0) sliderBarForm)]
可以用代替
toElement (move (0,0) sliderBarForm)
?
我不认为你能轻易地得到表格的尺寸。我想这是因为表格可以是很多不同的东西(形状、路径等)。当我以后需要知道尺寸时,我会在创建表单时跟踪它们。
type alias MyForm =
{ form : Form
, width : Int
, height : Int
}
makeRectForm: Float -> Float -> MyForm
makeRectForm w h = {form: (filled grey (rect w h)), width: (round w), height: (round h)}
然后在您的情况下,您可以将MyForm
与collage
一起使用。
makeSlider : Element -> MyForm -> Element
makeSlider sliderShape sliderBarMyForm =
let
sliderBar =
--convert sliderBarForm from type Form to Element
collage sliderBarMyForm.width sliderBarMyForm.height [(move (0,0) sliderBarMyForm)]
in
layers [sliderShape, sliderBar]