2011-10-19 85 views
3

我有一些XAML這樣的繪製時間序列的散點圖(X軸:日期時間,Y軸:整數值):是否可以在圖表元素上畫一個矩形?

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

我能夠添加圖形對象,如線此網格作爲其子項之一,但必須使用與圖表控件所使用的座標不同的XY座標。當然這是預料之中的,因爲圖表設立了自己的座標軸。

我能想到的唯一方法是將一些虛擬點添加到圖中作爲不同的系列,但我希望有一個更好的方法來做到這一點。有什麼建議麼?

編輯:增加了一個圖進一步闡明。

enter image description here

回答

2

我能想到的唯一方法是通過檢查尋找兩個軸對象的虛擬樹。

也許通過VisualTreeHelper

一旦你知道它們的位置和它們的大小與規模的信息,您可以從希望圖表控件,你可以計算出從圖表點改造Silverlight的協調得到結合。

+0

同意Erno。使用'VisualTreeHelper'挖掘繪圖控件的可視化子項,以提取其具有圖形的「Canvas」面板。然後使用容器生成器獲取想要在矩形下分組的節點,然後使用節點的絕對座標w.r.t.在畫布面板上繪製一個包含所需節點的矩形。 –

1

你綁到裝飾用矩形網格?如果是這樣,爲什麼不使用邊界? ...(抱歉,我沒有選擇發表評論,因此我問你這個問題作爲答案)

+0

哦,不。我有一個散點圖,我要標記一組彼此接近的點。爲此,我正在考慮使用點的座標並創建一個矩形,然後我可以將其覆蓋在圖表上。我目前唯一知道這樣做的方法是將這些點創建爲另一個系列,並將它們添加到圖表本身。我添加了一個數字來進一步澄清這一點。 – Legend

1

我會創建一個Adorner來做你的覆蓋東西的實際繪製。在Chart控件中創建此圖層,或者同時封裝這兩個圖層。並給圖表類適當的MatrixTransform將覆蓋圖對象中的給定座標轉換爲當前的圖轉換。 TransformToDescendant也很有幫助,它允許您將圖表中的一個點轉換爲您的裝飾者。

我不知道你在圖表IScrollInfo,Ren​​derTransform等方面改變了你的位置。但是有了這些信息,我認爲你可以實現你正在尋找的東西。

相關問題