【问题标题】:Elm - Form inspection榆树 - 形式检查
【发布时间】:2016-04-07 11:04:11
【问题描述】:

以下函数包含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]

有没有办法提取表单的尺寸,例如Graphics.Element.sizeOf,以便makeSlider 函数不需要知道sliderBarForm 的显式尺寸?

或者是否存在toElement 函数以便

collage 1000 1000 [(move (0,0) sliderBarForm)]

可以替换为

toElement (move (0,0) sliderBarForm)?

【问题讨论】:

    标签: forms element dimensions elm inspection


    【解决方案1】:

    我认为您不能轻易获得表单的尺寸。我想这是因为一个表单可以是很多不同种类的东西(形状、路径等)。当我以后需要知道尺寸时,我会在创建表单时跟踪它们。

    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)}
    

    那么在您的情况下,您可以使用MyFormcollage

    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]
    

    【讨论】:

    • 有道理 - 谢谢 - 太好了,因为我不必为 makeSlider 使用额外的参数。
    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    相关资源
    最近更新 更多