2010-05-28 49 views
2

我有一個Zedgraph textobj,我想總是放在同一個x,y位置(ASP.NET圖像)。我注意到文本並不總是顯示在相同的起始x位置。它根據文本的長度而變化。我試圖通過填充空格來使文本具有相同的長度。它有一點幫助,但結果並不總是一致的。我使用PaneFraction作爲coordType。Zedgraph textobj X位置取決於文本長度?

讓一段文字始終顯示在同一個x位置的正確方法是什麼?我使用textobj作爲標題,因爲原生標題屬性總是顯示居中,我需要將我的標題左對齊到圖形。

回答

0

你使用這個構造函數嗎?

TextObj(text, x, y, coordType, alignH, alignV) 

如果沒有,那麼可以肯定你設置alignH到AlignH.Left和alignV至AlignV.Top。那麼X和Y應該是0,0。PaneFraction對於coordType應該是正確的選項,除非我錯過了你的意圖。

或者,您可以簡單地下載Zedgraph代碼,將其編輯爲左對齊標題(或者更好,爲此提供一個選項,原本應該完成),然後在生產中使用它。美的開源。

+0

X被剪切,y是0的構造函數,但location.x&location.y稍後修改。 – 2010-06-09 18:51:25

+0

其中重要的部分是確保AlignH和AlignV分別設置爲左和頂。否則,它默認爲兩個中心。 – drharris 2010-06-10 01:23:45

3

不,它不依賴於文字lenght,但是......

這取決於各種其他的東西:

  • 水平和垂直文本框對齊(參見:Location
  • 窗格的當前大小。字體大小會動態縮放以適應圖表大小的變化。
  • 計算正確的位置讓TextObj(或任何其他對象)始終在同一個地方是相當困難的。因此,您需要儘可能避免位置座標中的任何數字/分數。 ZedGraph有時會以非常奇怪的方式計算真實位置。

您還沒有提供任何代碼,因此很難判斷您是否犯了錯以及在哪裏犯了錯誤(如果有)。但是,如果我是你,我會做這樣的事情:

TextObj fakeTitle = new TextObj("some title\n ", 0.0, 0.0); // I'm using \n to have additional line - this would give me some space, margin. 
fakeTitle.Location.CoordinateFrame = CoordType.ChartFraction; 
fakeTitle.Location.AlignH = AlignH.Left;  // Left align - that's what you need 
fakeTitle.Location.AlignV = AlignV.Bottom; // Bottom - it means, that left bottom corner of your object would be located at the left top corner of the chart (point (0,0)) 
fakeTitle.FontSpec.Border.IsVisible = false; // Disable the border 
fakeTitle.FontSpec.Fill.IsVisible = false; // ... and the fill. You don't need it. 
zg1.MasterPane[0].GraphObjList.Add(fakeTitle); 
我使用 ChartFraction

座標,而不是PaneFraction(如drharris建議)座標有標題與圖表的左邊框對齊很好。否則它會完全衝到左側(沒有餘量等) - 這看起來更好。

但要確保你沒有設置過大字體大小 - 它可以在頂部

+0

無論我給location.X&location.Y的值如何,ChartFraction總是將文本放在圖表的中間。 – 2010-06-09 18:50:19

+0

請確保您將對象添加到'GraphPane'對象,而不是'MasterPane'對象。看看我的代碼,它可以與最新版本的ZG完美配合。也許你有一些舊的版本? – Gacek 2010-06-09 19:59:02

相關問題