C# 用C语言编写Bezier曲线的名称#

C# 用C语言编写Bezier曲线的名称#,c#,graphics,drawing,bezier,C#,Graphics,Drawing,Bezier,我必须制作一个程序,使用C生成的图形来复制我用草书写的名字。扭曲是,我必须使用贝塞尔曲线。我已经调用了一个函数,使用4个点和重力概念生成贝塞尔曲线。我的问题是,做10条曲线最简单的方法是什么 这是我的贝塞尔曲线函数 public static void bezierCurve( Graphics g, double p1x, double p1y, double p2x, double p2y, double p3x, double p3y,

我必须制作一个程序,使用C生成的图形来复制我用草书写的名字。扭曲是,我必须使用贝塞尔曲线。我已经调用了一个函数,使用4个点和重力概念生成贝塞尔曲线。我的问题是,做10条曲线最简单的方法是什么

这是我的贝塞尔曲线函数

public static void bezierCurve(
     Graphics g, 
     double p1x, double p1y, 
     double p2x, double p2y, 
     double p3x, double p3y, 
     double p4x, double p4y)
{
    double t, r1x, r4x, r1y, r4y;
    float x, y;

    Pen black = new Pen(Color.Black);

    r1x = 3 * (p2x - p1x);
    r4x = 3 * (p4x - p3x);

    r1y = 3 * (p2y - p1y);
    r4y = 3 * (p4y - p3y);

    t = 0;
    while (t <= 1)
    {
        x = (float) ((2 * Math.Pow(t, 3) - 3 * Math.Pow(t, 2) + 1) * p1x
            + (-2 * Math.Pow(t, 3) + 3 * Math.Pow(t, 2)) * p4x
            + (Math.Pow(t, 3) - 2 * Math.Pow(t, 2) + t) * r1x
            + (Math.Pow(t, 3) - Math.Pow(t, 2)) * r4x);
        y = (float) ((2 * Math.Pow(t, 3) - 3 * Math.Pow(t, 2) + 1) * p1y
            + (-2 * Math.Pow(t, 3) + 3 * Math.Pow(t, 2)) * p1y
            + (Math.Pow(t, 3) - 2 * Math.Pow(t, 2) + t) * r1y
            + (Math.Pow(t, 3) - Math.Pow(t, 2)) * r4y);

        g.DrawRectangle(black, x, y, 1, 1);

        t = t + 0.01;
    }
}
公共静态无效贝塞尔曲线(
图形g,
双p1x,双p1y,
双p2x,双p2y,
双p3x,双p3y,
双p4x,双p4y)
{
双t,r1x,r4x,r1y,r4y;
浮动x,y;
黑色钢笔=新钢笔(颜色为黑色);
r1x=3*(p2x-p1x);
r4x=3*(p4x-p3x);
r1y=3*(p2y-p1y);
r4y=3*(p4y-p3y);
t=0;

(t我建议使用一些矢量编辑软件,例如InkScape或Corel,使用该软件用beziers绘制您的名字,然后另存为.SVG。SVG格式很容易理解。将坐标从路径复制到程序中。或者,使用一张图纸手动获取坐标


C#已经有了绘制贝塞尔曲线的功能,请参见,这将比您的实现更高效(并产生更好的效果)。

感谢您为我解决了这个问题。由于某种原因,它没有正确编码。