Как нарисовать форму пружины, используя класс рисования С#
замещающий текст http://img812.imageshack.us/img812/373/spring.jpg< /а>
Как нарисовать форму пружины, используя класс рисования С#
замещающий текст http://img812.imageshack.us/img812/373/spring.jpg< /а>
Это скорее математическая задача, чем задача C#. Вам нужно вывести параметрическое уравнение для кривой, которую вы хотите нарисовать.
При этом заполните массив объектов Point значениями для параметрического уравнения на определенном интервале с определенным шагом (чем меньше шаг, тем больше окончательный рисунок будет похож на реальную форму). Затем вы можете использовать g.DrawLines (MSDN: DrawLines) для рисования фактическая кривая на поверхности.
Вы можете изменить ширину, цвет и другие свойства линии, изменив параметры объекта Pen.
Ваш фактический код будет выглядеть так:
void DrawSpring (Graphics g)
{
List<Point> points = new List<Point>();
double step = 0.01;
for(double t = -2; t < 2; t += step)
{
Point p = new Point();
p.X = XPartOfTheEquation(t);
p.Y = YPartOfTheEquation(t);
points.Add(p);
}
g.DrawLines(new Pen(new SolidBrush(Color.Black), 2f), points.ToArray());
}
Прежде всего, вам нужно придумать формулу, которая будет представлять пружину. Вы можете нарисовать круг, и по мере того, как вы будете его обходить, пусть X немного увеличится. Например:
for (double i = 0; i < 50; i += 0.01)
{
int x = (int)(Math.Sin(i) * 10 + i * 3);
int y =(int)(Math.Cos(i) * 10 + 50);
}
См. переменную i
там как время, а результат x
и y
координаты для отрисовки; вы пройдете путь весны маленькими шажками.
Затем вы можете создать новый Bitmap
и использовать метод SetPixel
для этих координат, а в методе OnPaint
вашей формы нарисовать на нем растровое изображение.
Если вы хорошо разбираетесь в математике (у меня нет :P), вы можете отображать только пиксели внутри растрового изображения - приведенный выше пример не решает проблему минимального и максимального значений для i
.