C# 在图表中显示圆,半径以图表单位C表示#

C# 在图表中显示圆,半径以图表单位C表示#,c#,winforms,charts,size,C#,Winforms,Charts,Size,小结:我试过像泡点和乱搞标记大小之类的方法,但这两种方法都不能以实际网格单位设置半径。气泡图=%和标记=点(忽略网格) 如何在图表中添加一个半径为网格单位的圆 -----旧的----- 我在气泡图中查看了如何改变气泡的大小,显然第二个Y值应该控制气泡的大小。。。除了它什么都不做 我不能使用标记大小作为解决方案,因为大小需要使用正确的单位,而不是像素 唯一能够改变大小的是最小和最大大小值。。。但是我不能用它精确地控制尺寸(更不用说那会很愚蠢) 没有代码,因为它没有特殊的代码或设置,应该很容易复制

小结:我试过像泡点和乱搞标记大小之类的方法,但这两种方法都不能以实际网格单位设置半径。气泡图=%和标记=点(忽略网格)

如何在图表中添加一个半径为网格单位的圆

-----旧的----- 我在气泡图中查看了如何改变气泡的大小,显然第二个Y值应该控制气泡的大小。。。除了它什么都不做

我不能使用标记大小作为解决方案,因为大小需要使用正确的单位,而不是像素

唯一能够改变大小的是最小和最大大小值。。。但是我不能用它精确地控制尺寸(更不用说那会很愚蠢)

没有代码,因为它没有特殊的代码或设置,应该很容易复制

编辑: 刚刚意识到气泡大小基于其他气泡大小,而不是网格。这是一个大问题,因为我需要一个半径为网格单位的圆。它也需要独处

我需要一个半径为网格单位的圆

MSChart中有3个坐标系:

  • 数据
  • 某些区域的百分比,最显著的是
    图表区域
    内部绘图位置
  • 图表控件
    ClientArea的像素
我假设网格单位是指数据值,也用于显示网格线和刻度

要创建圆或其他形状,您可以使用包含椭圆的
GraphicsPath
添加
多边形注释
,也可以简单地添加
椭圆符号

或者您可以绘制圆。以下是如何绘制:

private void chart_PrePaint(object sender, ChartPaintEventArgs e)
{
    ChartArea ca = chart.ChartAreas[0];
    Axis ax = ca.AxisX;
    Axis ay = ca.AxisY;
    Series s = chart.Series[0];

    DataPoint dpCenter = s.Points[22];

    dpCenter.MarkerStyle = MarkerStyle.Circle;

    double xVal = dpCenter.XValue;
    double yVal = dpCenter.YValues[0];

    double rad = 2;  // <<<<<= radius in values

    float xRad = (float)(ax.ValueToPixelPosition(0) - ax.ValueToPixelPosition(rad));
    float yRad = (float)(ay.ValueToPixelPosition(0) - ay.ValueToPixelPosition(rad));

    float xc = (float)ax.ValueToPixelPosition(xVal);
    float yc = (float)ay.ValueToPixelPosition(yVal);

    Rectangle r = Rectangle.Round(new RectangleF(xc - xRad, yc - yRad, 
        xRad * 2, yRad * 2));

    e.ChartGraphics.Graphics.DrawEllipse(Pens.Red, r );
}
private void chart_PrePaint(对象发送方,ChartPaintEventArgs e)
{
ChartArea ca=chart.ChartAreas[0];
轴ax=ca.axix;
轴ay=约轴Y;
系列s=图表系列[0];
数据点dpCenter=s.Points[22];
dpCenter.MarkerStyle=MarkerStyle.Circle;
双xVal=dpCenter.XValue;
双yVal=dpCenter.yValue[0];

double rad=2;//你在使用什么组件?你能提供一些代码片段吗?现在很难猜到这些东西……我在VS designer中使用图表组件。我真是个傻瓜——Winforms