2014-01-21 27 views
1

我有一個mschart(System.Windows.Forms.DataVisualization.Charting.Chart)控件添加到我已配置爲點圖(不是快速點)。我已經知道如何通過個性化的每個點的標記大小的系列:基於軸值爲每個點系列中的每個點個性化MarkerSize c#

MyChart.Series[0].Points[0].MarkerSize = K; 

但我一直無法找出這個值實際上是基於因爲它似乎並沒有線性的。我想要做的是有一些計算有效標記大小的方法,這些標記大小將是與x或y軸相關的半徑或直徑。

換句話說,假設我有一個散點圖,它的x和y軸的值分別從-100到100(比如說「米」),我想添加一個圓點,在這個尺度上5米,我會怎麼做呢?例如,如果我將比例尺更改爲-200至200,那麼相同的點就會顯得更小。我到處搜索並找不到明確的答案。

在此先感謝!

回答

1

標記大小以像素爲單位。你可以試試這個代碼(未經測試!):

static int CalcualteMarkerPixelSize(double diameterOnXAxis, Chart chart) 
{ 
    double innerWidthScale = chart.ChartAreas[0].AxisX.Maximum - chart.ChartAreas[0].AxisX.Minimum; 
    float innerWidthPct = chart.ChartAreas[0].InnerPlotPosition.Width/100; 
    float innerWidthPixels = chart.Width*innerWidthPct; 
    return (int) (diameterOnXAxis/innerWidthScale*innerWidthPixels); 
} 
+0

非常感謝你!代碼運行良好。我最終得到的唯一問題是當圖表的寬度比高度大得多時出現的某種「偏斜」。我通過使用寬度和高度的平均值而不是僅僅依賴寬度來解決大部分問題:) –

相關問題