在C#中模拟用于模仿Powerpoint和Photoshop的UI的曲线

时间:2012-05-21 23:23:43

标签: c# winforms algorithm bezier curve

我一直在研究C#中涉及图像编辑和动画的程序。

我发现我需要一个允许用户绘制曲线的界面。

我认为Photoshop和Powerpoint使用的系统非常直观。

我四处搜寻,发现了很多关于这个曲线系统的东西,包括它被称为贝塞尔曲线,以及点如何定义它们。

然而,尽管它们都描述了点如何定义曲线,但它们都没有描述Powerpoint和Photoshop使用的定义系统,其中两个线段类似于切线。

直观地说,我认为不知何故这些段用于计算定义曲线的点,但我完全没有注意到。

简而言之,我试图允许我的用户以类似于Photoshop和Powerpoint的方式绘制贝塞尔曲线,使用两个线段,在给定点具有端点,定义“切线”,长度和方向这些部分都会影响曲线。

1 个答案:

答案 0 :(得分:0)

this.CreateGraphics().DrawBezier(Pens.Black, 0, 0, 20, 80, 80, 20, 100, 100);
在这种情况下,

this是一个表单,我在覆盖OnPaint事件时调用它。

您也可以在图像上绘制贝塞尔曲线,然后查看它:

var bitmap = new Bitmap(100, 100);

Graphics.FromImage(bitmap).DrawBezier(Pens.Black, 0, 0, 20, 80, 80, 20, 100, 100);

this._pictureBox.Image = bitmap;

我的例子中的结果是:

Example