资源简介
曲线生成算法的C#gdi+实现(贝塞尔曲线、样条曲线、B样条曲线)
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 曲线的生成算法
{
public partial class FrmMain : Form
{
PointF[] pts;
Graphics g;
public FrmMain()
{
InitializeComponent();
}
//绘制Bezier曲线(控制点数要满足3n+1才能绘制)
private void DrawBezier()
{
g.Clear(Color.White);
pts = new PointF[10];
pts[0] = new Point(50 100);
pts[1] = new Point(80 230);
pts[2] = new Point(120 230);
pts[3] = new Point(140 160);
pts[4] = new Point(180 50);
pts[5] = new Point(230 50);
pts[6] = new Point(270 120);
pts[7] = new Point(330 230);
pts[8] = new Point(380 230);
pts[9] = new Point(470 150);
if (pts.Length >= 4 && (pts.Length - 1) % 3 != 0)
{
MessageBox.Show(“控制点个数不合理!\n控制点个数应该满足3n+1““提示“);
return;
}
g.DrawLines(Pens.Blue pts);
PointF p = new PointF();
PointF tp = new PointF();
int j = 0;
int n = (pts.Length - 1)/ 3; //绘制Bezier曲线条数
double d = 0.1; //t的取值间隔
for (int i = 0; i < n; i++)
{
j = 3 * i;
tp = pts[j];
for (double t =d; t <=1-d; t = t + d)
{
p.X = (float)(Math.Pow(1 - t 3) * pts[j].X + 3 * t * Math.Pow(1 - t 2) * pts[j+1].X +
3 * Math.Pow(t 2) * (1 - t) * pts[j+2].X + Math.Pow(t 3) * pts[j+3].X);
p.Y = (float)(Math.Pow(1 - t 3) * pts[j].Y + 3 * t * Math.Pow(1 - t 2) * pts[j+1].Y +
3 * Math.Pow(t 2) * (1 - t) * pts[j+2].Y + Math.Pow(t 3) * pts[j+3].Y);
g.DrawLine(Pens.Red tp p);
tp = p;
}
g.DrawLine(Pens.Red tp pts[j+3]);
}
}
//矩阵相乘获得曲线上一点xy的坐标
private PointF GetPoint(double tint[] MatrixPointF[] pts)
{
double x = 0 y = 0;
double[] tp = new double[4];
double[] temp = { Math.Pow(t 3) Math.Pow(t 2)t1};
for (int j = 0; j <4; j++)
{
for (int k = 0; k <4; k++)
{
tp[j] = tp[j] + temp[k] * Matrix[k j];
}
}
//
for (int j = 0; j < 4; j++)
{
x = x + tp[j] * pts[j].X;
y= y + tp[j] *pts[j].Y;
}
return new PointF((float)x (float)y);
}
//三次样条绘制曲线
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 634 2013-11-28 23:39 曲线的生成算法(good)\曲线数据.txt
文件 14848 2018-08-10 15:06 曲线的生成算法(good)\曲线的生成算法\bin\Debug\曲线的生成算法.exe
文件 38400 2018-08-10 15:06 曲线的生成算法(good)\曲线的生成算法\bin\Debug\曲线的生成算法.pdb
文件 21472 2018-08-10 15:07 曲线的生成算法(good)\曲线的生成算法\bin\Debug\曲线的生成算法.vshost.exe
文件 490 2018-04-12 07:35 曲线的生成算法(good)\曲线的生成算法\bin\Debug\曲线的生成算法.vshost.exe.manifest
文件 8469 2013-12-19 16:56 曲线的生成算法(good)\曲线的生成算法\FrmMain.cs
文件 5116 2013-12-01 14:24 曲线的生成算法(good)\曲线的生成算法\FrmMain.Designer.cs
文件 6342 2013-12-01 14:24 曲线的生成算法(good)\曲线的生成算法\FrmMain.resx
文件 789 2018-08-10 15:06 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache
文件 6864 2018-08-10 15:06 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 2697 2018-08-10 15:07 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug\曲线的生成算法.csproj.FileListAbsolute.txt
文件 776 2017-12-11 21:29 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug\曲线的生成算法.csproj.GenerateResource.Cache
文件 1757 2018-08-10 15:06 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug\曲线的生成算法.csprojResolveAssemblyReference.cache
文件 14848 2018-08-10 15:06 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug\曲线的生成算法.exe
文件 180 2018-08-10 15:06 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug\曲线的生成算法.FrmMain.resources
文件 38400 2018-08-10 15:06 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug\曲线的生成算法.pdb
文件 180 2018-08-10 15:06 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug\曲线的生成算法.Properties.Resources.resources
文件 504 2013-12-01 11:34 曲线的生成算法(good)\曲线的生成算法\Program.cs
文件 1374 2013-12-01 11:33 曲线的生成算法(good)\曲线的生成算法\Properties\AssemblyInfo.cs
文件 2893 2013-12-01 11:33 曲线的生成算法(good)\曲线的生成算法\Properties\Resources.Designer.cs
文件 5612 2013-12-01 11:33 曲线的生成算法(good)\曲线的生成算法\Properties\Resources.resx
文件 1107 2013-12-01 11:33 曲线的生成算法(good)\曲线的生成算法\Properties\Settings.Designer.cs
文件 249 2013-12-01 11:33 曲线的生成算法(good)\曲线的生成算法\Properties\Settings.settings
文件 3604 2013-12-01 11:47 曲线的生成算法(good)\曲线的生成算法\曲线的生成算法.csproj
文件 905 2013-12-01 11:34 曲线的生成算法(good)\曲线的生成算法.sln
..A..H. 16896 2013-12-19 16:57 曲线的生成算法(good)\曲线的生成算法.suo
..A..H. 39424 2018-08-10 15:07 曲线的生成算法(good)\曲线的生成算法.v11.suo
..AD... 0 2014-01-20 00:02 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug\TempPE
目录 0 2018-08-10 15:06 曲线的生成算法(good)\曲线的生成算法\obj\x86\Debug
目录 0 2017-12-13 21:49 曲线的生成算法(good)\曲线的生成算法\bin\Debug
............此处省略9个文件信息
评论
共有 条评论