2015-07-28 91 views
1

我試圖在一個面板內製作一個標題形狀,這又是一個節點內部。 我的代碼,遠遠看上去像:GoJS沒有拉伸形狀以適合父母

var _ = go.GraphObject.make; 
var template = 
_(go.Node, "Spot",{ 
    minSize: new go.Size(150, NaN) 
    } 
    _(go.Panel, go.Panel.Auto, 
     _(go.Shape, { 
        figure: "Rectangle", 
        fill: "#ff00ff", 
        stroke: "#000000", 
        strokeWidth: 1,     
        alignment: new go.Spot(0.5, 0) //aligning it center 
      } 
     ) 
    ) 
); 

,如果我想只要我想舒展元素我想補充

stretch: go.GraphObject.Fill 

或者(如果水平)

stretch: go.GraphObject.Horizontal 

但形狀不是而是水平伸展。

什麼我自己也嘗試到現在爲止:

  • 添加defaultStretch到面板
  • 添加defaultStretch到節點和麪板
  • 更改面板佈局(或定位,如果你想這樣)
  • 更改節點佈局(或定位)
  • 在三個組件的每一個上設置兩個維度的minSize或maxSize

我在Gojs網站上研究過它,但只能找到上面提到的東西。

謝謝你幫我

PS:如果需要任何額外的信息,我會很樂意提供它

回答

2

在大多數情況下,小組應在它有一個以上的元素。在你的代碼中你實際上有兩個面板,每個面板只有一個元素。而且你的代碼不顯示任何文本(沒有TextBlock),所以它不能作爲標題。

你還沒有說過你想要拉伸哪個元素。設置GraphObject.stretch是正確的。但有時您需要將其設置在面板上,以確保面板被拉伸以允許拉伸面板內部的東西。

Panel.defaultStretch只是在面板的每個元素上設置GraphObject.stretch的默認值的一種方法。

我的猜測是,如果你想讓一個Shape被拉伸以適應另一個對象(可能是一個TextBlock),你想使用一個「自動」面板。這是您在最小樣本以及許多其他樣本中默認顯示的內容。

如果添加: {minSize屬性:新go.Size(150,NAN)}, 到最小樣本中的節點模板,你會看到: Minimal sample with minSize Nodes

這就是你正在尋找對於?如果沒有,請添加你想要的草圖。

+0

謝謝您的回覆。與此同時,我自己修復了這個問題,主要是在你的回答中做了什麼。但是有一件事需要做,那就是拉伸可以發揮作用:設置東西的寬度。在我的情況下,我有一個節點與兩個面板(一個用於形狀,一個用於文本)。我總是定義一些類似stretch的東西:fill或Text.wrapfit,但是我從來沒有說過如果實際上沒有內容,該怎麼辦。 minSize:在這裏沒有工作。我必須設置minSize,再加上我必須在節點上設置所需的**寬度**,然後一切正常。 – 1D0BE

+0

是的,如果你想要文本包裝允許的寬度必須是有限的。你可以通過設置寬度(a.k.a.desiredSize.width),設置maxSize.width,或通過面板限制其實際寬度來實現。如果將寬度設置爲實數,則不需要設置minSize或maxSize。 http://gojs.net/latest/intro/sizing.html –

+0

那麼,這裏的問題是,即使我設置了minSize(面板,或節點,或兩者),拉伸將不起作用,因爲沒有所需的寬度組。所以現在我有這樣的代碼:minSize:new go.Size(150,NaN),width:150.在我的情況下,寬度被覆蓋很頻繁,因爲我使用長標題確定尺寸(在我的情況) – 1D0BE