1

如何使用c#绘图类绘制类似弹簧的形状

替代文字 http://img812.imageshack.us/img812/373/spring.jpg

4

2 回答 2

2

首先你需要想出一个代表春天的公式。你可以画一个圆圈,当你绕着它走的时候,让 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变量视为时间,结果xy要绘制的坐标;你会小步穿过春天的路径。

然后,您可以创建一个新的并在这些坐标上Bitmap使用该方法,并在您的表单的方法中,在其上绘制位图。SetPixelOnPaint

如果您对数学有任何好处(我不是:P),您可能只能在位图中绘制像素 - 上面的示例不能解决i.

于 2010-08-05T09:21:25.647 回答
0

这更像是一个数学问题,而不是 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());
}
于 2010-08-05T09:30:27.053 回答