![](data:image/png;base64,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)
Visual C# Code:
/// <summary>
/// Khởi tạo các giá trị ngẫu nhiên cho bông tuyết
/// </summary>
/// <param name=”pic”></param>
private void CreateSnowFlake(SnowFlake pic)
{
int screenWidth = Screen.PrimaryScreen.WorkingArea.Width;
if (_firstTime)
{
if (rnd.Next(2) == 0)
pic.Image =
global::XMas.Properties.Resources.SnowFlake001;
else
pic.Image =
global::XMas.Properties.Resources.SnowFlake003;
_firstTime = true;
}
pic.Position = new
System.Drawing.Point(rnd.Next(screenWidth), -10);
int size=rnd.Next(40) + 10;
pic.Size = new System.Drawing.Size(size,size);
int sign=rnd.Next(2) == 0 ? -1 : 1;
pic.Direction = rnd.Next(10)*sign;
pic.Speed = rnd.Next(20) + 3;
}
Cờ _firstTime để việc gán Image cho bông tuyết chỉ xảy ra ở lần đầu tiên, các lần sau
nó sẽ bỏ qua, tuy nhiên có thể bỏ đi cờ này cũng không ảnh hưởng lắm đến tốc độ
chương trình.
Sự kiện Tick của Timer để điều khiển quá trình tuyết rơi:
Visual C# Code:
private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
int screenHeight = Screen.PrimaryScreen.Bounds.Height;
int screenWidth= Screen.PrimaryScreen.WorkingArea.Width;
//g.Clear(this.BackColor);
for(int i=0;i<pics.Length;i++)
{
// Xóa đi bông tuyết ở vị trí cũ
g.FillRectangle(SystemBrushes.Control, pics[i].Bounds);
// Nếu bông tuyết ra khỏi màn hình thì tạo lại các giá
trị mới
if (pics[i].Top > screenHeight || pics[i].Right<0 ||
pics[i].Left >screenWidth)