雪花类
class asnow
{
public int m_size;
public int m_x;
public int m_y;
public int m_xspeed;
public int m_yspeed;
private Random rd=new Random();
public asnow(int rdi)
{
replay(rdi);
}
public void speedchange()
{
m_xspeed =( m_xspeed + rd.Next(0, 3) - 1)%3;
}
public void replay(int rdi)//雪花落下后重新生成自顶部落下
{
Random rdres = new Random(rd.Next()+rdi);
int xmin = 10;
int xmax = Screen.PrimaryScreen.Bounds.Width-10;
int ymax=Screen.PrimaryScreen.Bounds.Height/2;
m_size = rdres.Next(10, 25);
m_x = rd.Next(xmin, xmax);
m_y = -rd.Next(0, ymax);
m_xspeed = 0;
m_yspeed = (m_size -5)/5;
Thread.Sleep(1);
}
}
下雪的方法写在timer事件中
private void timer1_Tick(object sender, EventArgs e)
{
string s1 = "你在身边时,你是一切" ;
string s2 = "你不在身边时,一切是你";
for (int i = 0; i < num; i++)
{
snows[i].m_x += snows[i].m_xspeed ;
snows[i].m_y += snows[i].m_yspeed;
snows[i].speedchange();
if (snows[i].m_y > Screen.PrimaryScreen.Bounds.Height)
{
snows[i].replay(i);
}
}
Graphics gr=this.CreateGraphics();
gr.Clear(Color.Black);
PaintEventArgs er = new PaintEventArgs(gr, ClientRectangle);
this.OnPaint(er);
}
绘制函数
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
for (int i = 0; i < num; i++)
{
if(snows[i].m_x>=0&&snows[i].m_y>=0)
g.FillEllipse(Brushes.White, snows[i].m_x, snows[i].m_y, snows[i].m_size, snows[i].m_size);
}
}
本文标题:用C#程序实现桌面下雪效果,责任编辑:宏鹏,来源:武汉北大青鸟鲁广校区栏目,于01-28发布于北大青鸟鲁广校区。用C#程序实现桌面下雪效果,雪花落下后重新生成自顶部落下。
预约将免费领取7天课程体验卡
只为您方便就学
专业老师24小时1对1学习指导
定制专属于你的专属学习方案
微信号:17740513250
微信号:17740513250