Elm - 表单检查
Elm - Form inspection
下面的函数包括了collage
的使用,只是把
Shape/Form 变成一个元素。
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]
有没有办法像 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]
下面的函数包括了collage
的使用,只是把
Shape/Form 变成一个元素。
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]
有没有办法像 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]