Если вы хотите что-то вроде этого: ..
.. 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
! Они могут быть вызваны довольно часто, и эти события действительно только для рисования. ((А иногда и для измерения))