17.C#编程学习—— 贝塞尔曲线
源码
usingSystem;
usingSystem.Drawing;
usingSystem.Windows.Forms;
classBezier :Form
{
protectedPoint[] apt =newPoint[4];
publicstaticvoid Main()
{
Application.Run(newBezier());
}
public Bezier()
{
Text ="Bezier (Mouse Defines Control Points)";
BackColor =SystemColors.Window;
ForeColor =SystemColors.WindowText;
ResizeRedraw =true;
OnResize(EventArgs.Empty);
}
protectedoverridevoid OnResize(EventArgs ea)
{
base.OnResize(ea);
int cx = ClientSize.Width;
int cy = ClientSize.Height;
apt[0] =newPoint(cx / 4, cy / 2);
apt[1] =newPoint(cx / 2, cy / 4);
apt[2] =newPoint(cx / 2, 3 * cy / 4);
apt[3] =newPoint(3 * cx / 4, cy / 2);
}
protectedoverridevoid OnMouseDown(MouseEventArgs mea)
{
Point pt;
if (mea.Button ==MouseButtons.Left)
pt = apt[1];
elseif (mea.Button ==MouseButtons.Right)
pt = apt[2];
else
return;
Cursor.Position = PointToScreen(pt);
}
protectedoverridevoid OnMouseMove(MouseEventArgs mea)
{
if (mea.Button ==MouseButtons.Left)
{
apt[1] =newPoint(mea.X, mea.Y);
Invalidate();
}
elseif (mea.Button ==MouseButtons.Right)
{
apt[2] =newPoint(mea.X, mea.Y);
Invalidate();
}
}
protectedoverridevoid OnPaint(PaintEventArgs pea)
{
Graphics grfx = pea.Graphics;
grfx.DrawBeziers(newPen(ForeColor),apt);
Pen pen =newPen(Color.FromArgb(0x80, ForeColor));
grfx.DrawLine(pen, apt[0], apt[1]);
grfx.DrawLine(pen, apt[2], apt[3]);
}
}
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow