一个圣诞祝福的经典小程序大家看能不能用C#技术实现类似的效果 http://download.csdn.net/detail/hjleaven/3979202 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这么晚了,给你思路吧。①调用Graphics.FromHwnd的DrawImage方法,在桌面绘制雪花的图片。②建立两个timer,第一个控制纵向的雪花下移,包括风向的控制(就是X,Y的位移控制)。第二个控制随机生成雪花。③当雪花飘落的纵坐标超过屏幕的范围时,将生成的对象释放。 2L,你的方法确实可以在桌面上绘图,但是有个问题,就是绘制的图像只要点击一下就会被清除,跟那个小程序不太一样哦 private void button1_Click(object sender, EventArgs e) { Graphics g = Graphics.FromHwnd(IntPtr.Zero); Image img = Image.FromFile("1.bmp"); g.DrawImage(img, new Rectangle(100, 100,100,100)); }这是我测试代码,不信你可以试试 不好意思,回复晚了。①你需要将控制雪花所有操作生成一个类(包括雪花的坐标,移动速度,图片等等)②你在桌面上生成的东西肯定会有刷新的,如果你不想这样,你可以让他在你的Form下运行。我给你配上一个源码,你参考一下吧,和你要实现的功能是一样的~~private void timer_Tick(object sender, EventArgs e) { Tick++; if (Tick % 10 == 0) { SnowFlake s = new SnowFlake(); Random rd = new Random(); s.X = rand.Next(-20, this.Width + 20); s.Y = 0f; s.XVelocity = (float)(rand.NextDouble() - 0.5f) * 2f; s.YVelocity = (float)(rand.NextDouble() * 3) + 1f; s.Rotation = rand.Next(0, 359); s.RotVelocity = rand.Next(-3, 3) * 2; s.image = Image.FromFile(@"Resources\" + rd.Next(1, 4) + ".gif"); if (s.RotVelocity == 0) { s.RotVelocity = 3; } s.Scale = (float)(rand.NextDouble() / 2) + 0.75f; SnowFlakes.Add(s); } Graphics g = Graphics.FromImage(screenImage); g.Clear(Color.Transparent); g.SmoothingMode = SmoothingMode.HighSpeed; for (int i = 0; i < SnowFlakes.Count; i++) { SnowFlake s1 = SnowFlakes[i]; s1.X += s1.XVelocity; s1.Y += s1.YVelocity; s1.Rotation += s1.RotVelocity; s1.XVelocity += ((float)rand.NextDouble() - 0.5f) * 0.7f; s1.XVelocity = Math.Max(s1.XVelocity, -2f); s1.XVelocity = Math.Min(s1.XVelocity, +2f); if (s1.Y > this.Height) { SnowFlakes.RemoveAt(i); } else { g.ResetTransform(); g.TranslateTransform(-16, -16, MatrixOrder.Append); //pan g.ScaleTransform(s1.Scale, s1.Scale, MatrixOrder.Append); //scale g.RotateTransform(s1.Rotation, MatrixOrder.Append); //rotate g.TranslateTransform(s1.X, s1.Y, MatrixOrder.Append); //pan g.DrawImage(s1.image, 0, 0); //draw } } g.Dispose(); SetBackground(screenImage); } 我帮你写了个一个完整的,如果需要请到下列网址下载~~源码地址:http://download.csdn.net/detail/llftc/3990138我是vs2010,framework是4.0的,如果有需要的话请下载。 消息框中的按钮如何自动点击 C#判断ASCII 32 (space) to 126 (~)的正则表达式怎么写,3Q winform中textbox的enable为false时,但怎么不用文本框变为灰色, 时间格式转换 关于小票打印机的问题 问个正则表达式 看看这个URL怎么获得? 麻烦大家帮个忙,,急急 C#中DataGrid数据绑定问题 是否能通过捕获Exception获得抛出错误的类和方法。。 查询QQ空间的访问人数 如何利用C#获取POST数据【不是POST数据,而是获取POST数据】
在桌面绘制雪花的图片。②建立两个timer,
第一个控制纵向的雪花下移,包括风向的控制(就是X,Y的位移控制)。
第二个控制随机生成雪花。③当雪花飘落的纵坐标超过屏幕的范围时,将生成的对象释放。
{ Graphics g = Graphics.FromHwnd(IntPtr.Zero);
Image img = Image.FromFile("1.bmp");
g.DrawImage(img, new Rectangle(100, 100,100,100));
}
这是我测试代码,不信你可以试试
②你在桌面上生成的东西肯定会有刷新的,如果你不想这样,你可以让他在你的Form下运行。我给你配上一个源码,你参考一下吧,和你要实现的功能是一样的~~private void timer_Tick(object sender, EventArgs e)
{
Tick++; if (Tick % 10 == 0)
{
SnowFlake s = new SnowFlake();
Random rd = new Random();
s.X = rand.Next(-20, this.Width + 20);
s.Y = 0f;
s.XVelocity = (float)(rand.NextDouble() - 0.5f) * 2f;
s.YVelocity = (float)(rand.NextDouble() * 3) + 1f;
s.Rotation = rand.Next(0, 359);
s.RotVelocity = rand.Next(-3, 3) * 2;
s.image = Image.FromFile(@"Resources\" + rd.Next(1, 4) + ".gif");
if (s.RotVelocity == 0)
{
s.RotVelocity = 3;
}
s.Scale = (float)(rand.NextDouble() / 2) + 0.75f;
SnowFlakes.Add(s);
} Graphics g = Graphics.FromImage(screenImage);
g.Clear(Color.Transparent);
g.SmoothingMode = SmoothingMode.HighSpeed; for (int i = 0; i < SnowFlakes.Count; i++)
{
SnowFlake s1 = SnowFlakes[i];
s1.X += s1.XVelocity;
s1.Y += s1.YVelocity;
s1.Rotation += s1.RotVelocity;
s1.XVelocity += ((float)rand.NextDouble() - 0.5f) * 0.7f;
s1.XVelocity = Math.Max(s1.XVelocity, -2f);
s1.XVelocity = Math.Min(s1.XVelocity, +2f); if (s1.Y > this.Height)
{
SnowFlakes.RemoveAt(i);
}
else
{ g.ResetTransform();
g.TranslateTransform(-16, -16, MatrixOrder.Append); //pan
g.ScaleTransform(s1.Scale, s1.Scale, MatrixOrder.Append); //scale
g.RotateTransform(s1.Rotation, MatrixOrder.Append); //rotate
g.TranslateTransform(s1.X, s1.Y, MatrixOrder.Append); //pan
g.DrawImage(s1.image, 0, 0); //draw
}
}
g.Dispose();
SetBackground(screenImage);
}
源码地址:http://download.csdn.net/detail/llftc/3990138我是vs2010,framework是4.0的,如果有需要的话请下载。