border="0" name="sina_roll" marginwidth="0" marginheight="0" src="http://news.sina.com.cn/o/allnews/input/index.html" frameborder="No" width="100%" scrolling="no" height="15">
贝塞尔是一名法国工程师。他发明的贝塞尔曲线可以说是一种奇妙的曲线,用它可以创造出很美的图像。一条贝塞尔曲线由4个点唯一定义,包括“起点”,“终点”和“控制点”。其中“控制点”的位置决定着曲线的形状。
// RandomBezier.cs @2007 by jl gzw
//----------------------------------------------
using System;
using System.Drawing;
using System.Windows.Forms;class RandomBezier: Form
{
//变量iCount表示贝塞尔曲线的个数
const int iCount = 2;
//变量iNumber表示环的个数
const int iNumber = 3; private Point[] ptArr = new Point[4 * iCount - (iCount - 1)]; public static void Main()
{
Application.Run(new RandomBezier());
}
public RandomBezier()
{
Text = "花样贝塞尔曲线";
this.BackColor = Color.Black;
Timer timer = new Timer();
timer.Interval = 100;
timer.Tick += new EventHandler(TimerOnTick);
timer.Start();
}
void TimerOnTick(object obj, EventArgs ea)
{
Random rand = new Random(); Graphics grfx = CreateGraphics();
//擦除旧的贝塞尔曲线。
for (int j = 0; j < iNumber; j++)
{
for (int i = 0; i < 4 * iCount - (iCount - 1); i++)
{
ptArr[i].X += 5;
ptArr[i].Y += 5;
}
grfx.DrawBeziers(new Pen(Color.Black, 1), ptArr);
} Point ptBeg = new Point(0,0);
//获得新贝塞尔曲线的坐标。
for(int i = 0; i < 4 * iCount - (iCount - 1); i++)
{
ptArr[i] = new Point(rand.Next(Math.Min(ClientSize.Width, ClientSize.Height)),
rand.Next(Math.Min(ClientSize.Width, ClientSize.Height)));
ptBeg = ptArr[0];
}
ptArr[4 * iCount - (iCount - 1) - 1] = ptBeg;
Color color = Color.FromArgb(rand.Next(256),rand.Next(256), rand.Next(256));
//画新的贝塞尔曲线。外层循环控制环的个数。
for (int j = 0; j < iNumber; j++)
{
grfx.DrawBeziers(new Pen(color, 1), ptArr); for (int i = 0; i < 4 * iCount - (iCount - 1); i++)
{
ptArr[i].X -= 5;
ptArr[i].Y -= 5;
}
} grfx.Dispose();
}
}
花样贝塞尔曲线(C#)
作者 jlgzw
贝塞尔是一名法国工程师。他发明的贝塞尔曲线可以说是一种奇妙的曲线,用它可以创造出很美的图像。一条贝塞尔曲线由4个点唯一定义,包括“起点”,“终点”和“控制点”。其中“控制点”的位置决定着曲线的形状。
下面是我模仿 Windows自带的屏幕保护“贝塞尔曲线”写的一个小程序。它也可以设置贝塞尔曲线的个数和环数,只需修改iCount和iNumber这两个变量。
//----------------------------------------------
// RandomBezier.cs @2007 by jl gzw
//----------------------------------------------
using System;
using System.Drawing;
using System.Windows.Forms;class RandomBezier: Form
{
//变量iCount表示贝塞尔曲线的个数
const int iCount = 2;
//变量iNumber表示环的个数
const int iNumber = 3; private Point[] ptArr = new Point[4 * iCount - (iCount - 1)]; public static void Main()
{
Application.Run(new RandomBezier());
}
public RandomBezier()
{
Text = "花样贝塞尔曲线";
this.BackColor = Color.Black;
Timer timer = new Timer();
timer.Interval = 100;
timer.Tick += new EventHandler(TimerOnTick);
timer.Start();
}
void TimerOnTick(object obj, EventArgs ea)
{
Random rand = new Random(); Graphics grfx = CreateGraphics();
//擦除旧的贝塞尔曲线。
for (int j = 0; j < iNumber; j++)
{
for (int i = 0; i < 4 * iCount - (iCount - 1); i++)
{
ptArr[i].X += 5;
ptArr[i].Y += 5;
}
grfx.DrawBeziers(new Pen(Color.Black, 1), ptArr);
} Point ptBeg = new Point(0,0);
//获得新贝塞尔曲线的坐标。
for(int i = 0; i < 4 * iCount - (iCount - 1); i++)
{
ptArr[i] = new Point(rand.Next(Math.Min(ClientSize.Width, ClientSize.Height)),
rand.Next(Math.Min(ClientSize.Width, ClientSize.Height)));
ptBeg = ptArr[0];
}
ptArr[4 * iCount - (iCount - 1) - 1] = ptBeg;
Color color = Color.FromArgb(rand.Next(256),rand.Next(256), rand.Next(256));
//画新的贝塞尔曲线。外层循环控制环的个数。
for (int j = 0; j < iNumber; j++)
{
grfx.DrawBeziers(new Pen(color, 1), ptArr); for (int i = 0; i < 4 * iCount - (iCount - 1); i++)
{
ptArr[i].X -= 5;
ptArr[i].Y -= 5;
}
} grfx.Dispose();
}
}