0

ScatterViewプログラムで Scatterviews を追加する XAML ベースがあります (以降、 Scatter2s と呼びます)。

それぞれが正常にScatter2s機能します。それぞれに が含まれており、その中に形状ScatterViewItemが含まれてEllipseおり、これらはすべて必要に応じて完全に Surface に描画されます。

2 つの楕円の間に線を描画しようとして、プロパティScatter2.[AScatterViewItem].Center.X.Yプロパティを取得しようとしたため、線の X1Y1、X2Y2 プロパティを設定できましたが、NaN として返されました。私も試しActualCenterてみましたが、同じ結果になりました。

楕円が画面に描画される前にこれらのプロパティにアクセスしようとしていたためだと最初は思っていましたが、描画後にプロパティ値を印刷して同じ結果を得ました。

ScatterViewItem描画する前に、楕円の幅と高さと同様に、幅と高さのそれぞれが明示的に設定されていることを確認しました。

ScatterViewItemCenter プロパティを使用するよりも、明示的に配置されていないa の位置を取得するより良い方法はありますか?

ありがとう


ノード内:

public void CenterToString()
{
    Console.Out.WriteLine("Actual centre: " + svi.ActualCenter.toString());
    Console.Out.WriteLine("Centre: " + svi.Center.toString());
}

私のメインクラスでは

Node node_one = ((GeneNetwork) context).getNode(localNodeIds[0]);
node_one.CenterToString();

出力を与えます:

文字列の実際の中心: NaN,NaN 文字列の中心
: NaN,NaN

Nodemain ScatterView( )に a を追加するコードはcontext.Items.Add(svi)、関数の前に呼び出されCenterToString()ます。

SurfaceWindow クラスでこれを配置する場所と関係がありますか? 現在、onInitialised()への呼び出しの後、すべてが にありますbase.OnInitialised

4

1 に答える 1

0

中心を設定するか、ユーザーが SVI を移動するまで、中心は設定されません。それ以外の場合、SV はそれらをランダムに配置するだけなので、私はそれを設定します。本当にしたくない場合は、 wpf のウィンドウ内の要素の絶対位置を取得する のように TransformToAncestor を使用して、親 SV に対する SVI の中心の位置を取得する必要があります。

于 2011-11-19T17:31:45.603 に答える