2011-10-19 15 views
3

私は時系列(X軸:日時、Y軸:整数値):の散布図を描くこのようないくつかのXAMLを持っているチャート要素に矩形を描くことは可能ですか?

<Grid Name="chartgrid"> 
    <charting:Chart Name="scatterplot"> 
    </charting:Chart> 
</Grid> 

私はそのように行としてグラフィックオブジェクトを追加することができていますこのグリッドはその子の1つですが、XYの座標をチャートコントロールで使用されているものと異なるものを使用して行う必要があります。もちろん、チャートが独自の軸を設定するため、これが期待されます。

私は考えることができる唯一の方法は、異なるシリーズとしてグラフにいくつかのダミーポイントを追加することですが、これを行うには良い方法があり期待しています。助言がありますか?

編集:さらに明確に数字を追加しました。

enter image description here

答えて

2

私は両方の軸のオブジェクトを探して仮想ツリーを調べることであると考えることができる唯一の方法(申し訳ありませんが、私はまだコメントするオプションを持っていけない。そのため、私はあなたに答え、この質問を)。

はおそらくVisualTreeHelper

を使用することにより、あなたは自分の位置やあなたがうまくいけば、あなたは座標Silverlightのためにチャートポイントから変換を計算することができ、チャートコントロールから取得することができスケール情報と組み合わせて自分のサイズを知っていたら。

+0

エルノと同意する。 'VisualTreeHelper'を使用してチャートコントロールのビジュアルな子要素を掘り下げて、キャンバスパネルを抽出します。グラフにはグラフが表示されます。次に、コンテナジェネレータを使用して、矩形の下でグループ化するノードを取得し、その後、ノードの絶対座標w.r.tを使用してノードを取得します。キャンバスパネルは、あなたが望むノードを含む矩形を描きます。 –

1

あなたは長方形でグリッドを飾るために抱き合わせていますか?もしそうなら、なぜボーダーを使用しないのですか? ...

+0

にvorrtexの答えによって記載されている技術を使用することができますように聞こえるああ、いや。私は互いに近くにある点のセットをマークしたい散布図を持っています。これを行うために、私はポイントの座標を使用して、グラフ上にオーバーレイできる矩形を作成することを考えていました。私がこれを行うことを知っている唯一の方法は、これらの点を別の系列として作成し、チャート自体に追加することです。私はこれをさらに明確にするために図を追加しました。 – Legend

1

私はあなたのオーバーレイのものの実際の描画を行うためにAdornerを作成します。 Chartコントロールでこのレイヤーを作成するか、両方をカプセル化するクラスを作成します。また、Chartクラスに適切なMatrixまたはTransformを与えて、オーバーレイオブジェクト内の指定された座標を現在のChartトランスフォームに変換します。 TransformToDescendantも役立ちます。これは、例えばあなたのチャートからあなたのアドナーにポイントを変換することを可能にします。

私はあなたのチャートIScrollInfo、RenderTransformなどにしかし、私はあなたが探しているものを達成することができると思うこの情報と位置を変換するものとどのように知りません。

関連する問題