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 に答える