2

常に同じx、y位置(ASP.NETイメージ)に配置したいZedgraphtextobjがあります。テキストが常に同じ開始x位置に表示されるとは限らないことに気づきました。テキストの長さに応じてシフトします。スペースを埋めて、テキストを同じ長さにしようとしました。それは少し役に立ちましたが、結果は常に一貫しているわけではありません。coordTypeにPaneFractionを使用しています。

テキストを常に同じx位置に表示するための適切な方法は何ですか。ネイティブのtitleプロパティは常に中央に表示され、タイトルをグラフの左揃えにする必要があるため、textobjをタイトルとして使用しています。

4

2 に答える 2

3

いいえ、テキストの長さには依存しませんが...

それは他のさまざまなことに依存します:

  • テキスト ボックスの水平方向および垂直方向の位置合わせ (位置を参照)
  • ペインの現在のサイズ。フォント サイズは、変化するグラフのサイズに合わせて動的にスケーリングされます。
  • 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);

(drharrisが示唆するように)ChartFraction座標の代わりに座標を使用して、タイトルをチャートの左端にうまく揃えます。PaneFractionそうしないと、完全に左側にフラッシュされます (マージンがないなど)。この方法の方が見栄えがよくなります。

ただし、フォント サイズを大きくしすぎないように注意してください。上部が切り取られる可能性があります。

于 2010-06-05T15:24:59.563 に答える
0

このコンストラクタを使用していますか?

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

そうでない場合は、alignH を にAlignH.Left、alignV を に設定していることを確認してくださいAlignV.Top。次に、X と Y は 0、0 であるPaneFraction必要があります。coordType は、ここでの正しいオプションである必要があります。

または、単に Zedgraph コードをダウンロードし、それを編集してタイトルを左揃えにします (または、これを行うためのオプションを提供することをお勧めします)。オープンソースの美しさ。

于 2010-06-05T15:20:18.293 に答える