gpt4 book ai didi

c# - MSchart 极坐标图自定义标签不起作用

转载 作者:行者123 更新时间:2023-11-30 17:28:44 25 4
gpt4 key购买 nike

默认情况下,极坐标图上的角度按顺时针方向从 0 到 360,但我希望它们逆时针(逆时针)

chart.ChartAreas[0].AxisX.Title = "Elevation";
chart.ChartAreas[0].AxisY.Title = "Power(dBm)";
chart.ChartAreas[0].BackColor = System.Drawing.Color.FromArgb(211, 223, 240);
chart.ChartAreas[0].BorderColor = System.Drawing.Color.FromArgb(26, 59, 105);
chart.ChartAreas[0].AxisY.IsStartedFromZero = false;
chart.PrePaint += new EventHandler<ChartPaintEventArgs>(chart_prePaint);

我已经尝试根据我发现的一些示例代码更改标签:

CustomLabelsCollection labels = chart.ChartAreas[0].AxisX.CustomLabels;

if (labels == null) return;

for (int i = 0; i < labels.Count - 1; i++)
{
if (labels[0].Text == "360") break;
labels[i].Text = (360 - int.Parse(labels[i].Text)).ToString();
labels[i].ToolTip = "Angle in Degrees";
}

代码会更改对象中的标签,但不会更改图表中的标签。每次事件被触发并且我们回到这个事件处理程序时,标签都被重置为原来的样子。工具提示也被重置。

更令人困惑的是,我不确定为什么首先要填充 CustomLabels 对象 - 我没有这样做。

知道为什么更改没有效果吗?

提前致谢!

最佳答案

如果你想要这样的东西:..

enter image description here

.. CustomLabels确实是实现它的一种方式。我找不到让轴自行反转的方法..

这是我使用的 C# 代码:

Axis ay = chart.ChartAreas[0].AxisY;
ay.LabelStyle.Enabled = false;

Axis ax = chart.ChartAreas[0].AxisX;
ax.CustomLabels.Clear();

int step = (int)ax.Interval;
if (step == 0) step = 30;

for (int i = 0; i < 360; i+=step)
{
int a = 360 - i; // the angle to target
var cl = new CustomLabel();
cl.Text = a + "°";
cl.FromPosition = a + 0.01; // create a small..
cl.ToPosition = a - 0.01; // ..space to place the label !
ax.CustomLabels.Add(cl);
}

请注意,只有 Labels是相反的,不是!

开始于 0只需将循环条件更改为 <=并检查 i>0在创建标签之前!

如果你没有设置 Interval我使用默认间隔 30 ;根据需要更改!


CustomLabels默认情况下集合是创建的,所以它不是null但它是 ( Count==0 )。如果你没有创建任何东西,那么就没有原始的 AxisLabels正在展示。 (只显示一种类型!)

除非你有充分的理由,比如非常动态的数据,否则你不应该在 xxxPaint 中添加或修改任何内容。事件!他们可能经常被调用,这些事件实际上只是为了绘图。 (((有时用于测量))

关于c# - MSchart 极坐标图自定义标签不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52187182/

25 4 0