1. Подготовка и инструментыcsharpGraphics g = e.Graphics; // Получаем объект для рисования (холст) из события Paint.
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; // Включаем сглаживание, чтобы линии не были «лесенкой».
Используйте код с осторожностью.2. Настройки системы координатcsharpint scale = 20; // Размер одной клетки в пикселях.
int offsetX = 100; // Смещение начала координат по горизонтали (точка 0 по X).
int offsetY = 400; // Смещение начала координат по вертикали (точка 0 по Y).
Используйте код с осторожностью.3. Определение «ручек» (Pens)csharpPen pen = new Pen(Color.Black, 2); // Черная ручка толщиной 2 пикселя для самой ракеты.
Pen gridPen = new Pen(Color.LightGray, 1); // Светло-серая ручка для тонких линий сетки.
Pen axisPen = new Pen(Color.Gray, 2); // Серая ручка потолще для главных осей координат.
Используйте код с осторожностью.4. Магическая функция преобразованияcsharp// Эта функция переводит ваши «математические» координаты в пиксели экрана.
// offsetY - y * scale делает так, чтобы Y рос вверх, а не вниз.
Point P(int x, int y) => new Point(offsetX + x * scale, offsetY - y * scale);
Используйте код с осторожностью.5. Рисование сетки на весь экранcsharpint width = this.ClientSize.Width; // Узнаем текущую ширину окна.
int height = this.ClientSize.Height; // Узнаем текущую высоту окна.
// Рисуем вертикальные линии от 0 до ширины экрана с шагом в scale (20 пикселей)
for (int x = 0; x < width; x += scale)
{
g.DrawLine(gridPen, x, 0, x, height);
}
// Рисуем горизонтальные линии от 0 до высоты экрана с тем же шагом
for (int y = 0; y < height; y += scale)
{
g.DrawLine(gridPen, 0, y, width, y);
}
Используйте код с осторожностью.6. Главные оси (X и Y)csharpg.DrawLine(axisPen, offsetX, 0, offsetX, height); // Вертикальная линия через точку offsetX.
g.DrawLine(axisPen, 0, offsetY, width, offsetY); // Горизонтальная линия через точку offsetY.
Используйте код с осторожностью.