Неправильное расположение точки относительно ординаты
Пытаюсь нарисовать систему координат, и отметить на ней точку. Систему вроде как нарисовал, но точка на ней отмечается неправильно. Не могу понять в чем проблема.
Я пытаюсь нарисовать точку с координатами (0, 50) .
g.DrawLine(Pens.Red, 0, 50, 0, 51);
Но она рисуется с координатами (0, -50).
Почему так происходит?
Вот так я рисую систему координат:
private void drawAxis(Graphics g)
{
Matrix m = new Matrix();
g.Transform = m;
m.Translate(mainPanel.Width / 2, mainPanel.Height / 2);
g.Transform = m;
g.DrawLine(Pens.Black, -mainPanel.Width / 2, 0, mainPanel.Width / 2, 0);
g.DrawLine(Pens.Black, 0, -mainPanel.Height / 2, 0, mainPanel.Height / 2);
g.DrawString("X", this.Font, Brushes.Black, mainPanel.Width / 2 - 20, -20);
g.DrawString("Y", this.Font, Brushes.Black, 5, -mainPanel.Height / 2 + 5);
int tick = 50;
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Far;
for (int i = -250; i <= 250; i += tick)
{
g.DrawLine(Pens.Black, i, -3, i, 3);
g.DrawLine(Pens.Black, -3, i, 3, i);
SizeF sizeXTick = g.MeasureString(i.ToString(), this.Font);
if (i != 0)
{
g.DrawString(i.ToString(), this.Font, Brushes.Black, i + sizeXTick.Width / 2, 4f, sf);
g.DrawString((-i).ToString(), this.Font, Brushes.Black, -3f, i - sizeXTick.Height / 2, sf);
}
else
g.DrawString("0", this.Font, Brushes.Black, new PointF(i - sizeXTick.Width / 3, 4f), sf);
}
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Используется система координат MM_TEXT, левая (углы по часовой стрелке), у которой ось OY направлена вниз. Поэтому неудивительно, что точка с положительным Y будет ниже начала координат.
При выводе меток же вы знак меняете почему-то (-i).ToString()