根据轴值c#为系列中的每个点个性化MarkerSize

时间:2014-01-21 01:35:17

标签: c# visual-studio charts point mschart

我有一个mschart(System.Windows.Forms.DataVisualization.Charting.Chart)控件添加到我已配置为点图表(不是快点)的窗体。我已经知道如何通过以下方式个性化系列中每个点的标记大小:

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

但我一直无法找出这个值实际上是基于什么,因为它似乎不是线性的。我想做的是,有一些计算有效标记尺寸的方法,该标记尺寸是相对于x或y轴的半径或直径。

换句话说,假设我有一个散点图,其x和y轴值分别从-100到100(比如“米”),我想添加一个半径为5的圆点。如此规模的米,我该怎么做呢?例如,如果我将比例改为-200到200,那么相同的点在视觉上会显得更小。我已经到处搜索,找不到明确的答案。

提前致谢!

1 个答案:

答案 0 :(得分: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);
}