Исходное задание на программу:
Создание ортогональной и аксонометрической проекции модели средствами базовой графики на языке C#
Описание программы:
Программа носит универсальный характер и подойдёт для построения любых моделей, точки которой заданы в таблицах программы или Excel’я. При изменении размеров окна меняется масштаб изображения. Такое дополнение реализовано на случай, если исходная модель имеет небольшой масштаб.
Фрагмент кода:
private void BuildAxonometry(object sender, EventArgs e) { try { IsBuild = true; int cX = (picAxon.Width > picAxon.Height) ? picAxon.Width : picAxon.Height; int cY = (picAxon.Width < picAxon.Height) ? picAxon.Width : picAxon.Height; int x0 = cX / 2; int y0 = cY / 2; Bitmap image = new Bitmap(picAxon.Width, picAxon.Height); Graphics g = Graphics.FromImage(image); Pen pen = new Pen(Color.Black); // xyz g.DrawString("X", new Font("Arial", 12.0f), new SolidBrush(Color.ForestGreen), new PointF(0, cY - 200)); g.DrawString("Z", new Font("Arial", 12.0f), new SolidBrush(Color.ForestGreen), new PointF(cX / 2 + 10, 0)); g.DrawString("Y", new Font("Arial", 12.0f), new SolidBrush(Color.ForestGreen), new PointF((float)(x0 * 2 - 30), (float)(y0 - 175 + Math.Sin(rad) * cY))); // axis g.DrawLine(pen, x0, y0, (float)(x0 - Math.Cos(rad) * 2000 * kSize), (float)(y0 + Math.Sin(rad) * 2000 * kSize)); g.DrawLine(pen, x0, y0, (float)cX / 2, 0); g.DrawLine(pen, x0, y0, (float)(x0 + Math.Cos(rad) * 2000 * kSize), (float)(y0 + Math.Sin(rad) * 2000 * kSize)); pen = new Pen(Color.DarkBlue, 3); for (int i = 0; i < _lines.Count; i++) { var point1 = _lines[i].point1; var point2 = _lines[i].point2; g.DrawLine(pen, (float)(x0 - (Math.Cos(rad) * point1.X - Math.Cos(rad) * point1.Y) * scale), (float)(y0 + (Math.Sin(rad) * point1.X + Math.Sin(rad) * point1.Y - point1.Z) * scale), (float)(x0 - (Math.Cos(rad) * point2.X - Math.Cos(rad) * point2.Y) * scale), (float)(y0 + (Math.Sin(rad) * point2.X + Math.Sin(rad) * point2.Y - point2.Z) * scale)); } lblScale.Text = lblScale.Text.Substring(0, 6) + " " + Math.Round(scale, 2); picAxon.Image = image; } catch (Exception) { } }
Содержание архива:
- Небольшой отчёт
- Исходники программы на языке C# для Visual Studio
kostyaLem