春天喜欢在c#画画

时间:2010-08-05 06:15:43

标签: c# math drawing system.drawing shape

如何使用c#绘图类

绘制类似弹簧的形状

alt text http://img812.imageshack.us/img812/373/spring.jpg

2 个答案:

答案 0 :(得分: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并在这些坐标上使用SetPixel方法,并在表单的OnPaint方法中绘制位图。

如果你对数学有好处(我不是:P)你可能只能在位图内绘制像素 - 上面的例子没有解决{{1的最小值和最大值的问题}}。

答案 1 :(得分:0)

这更像是数学问题,而不是C#问题。你想要的是为你想绘制的曲线推导出Parametric equation

随后用一定的步长填充一个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());
}