WinForm桌面下雪源码

WinForm桌面下雪源码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.Inter…


using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.Runtime.InteropServices;
using
System.Reflection;
using
System.Threading;
namespace
WindowsApplication30 {
public

partial

class
frmDesktopSnow : Form {
///

<summary>

///
下雪啦
///

</summary>

[DllImport(

User32.dll

, EntryPoint
=


FindWindow

)]
static

extern
IntPtr FindWindow(
string
lpClassName,
string
lpWindowName); [DllImport(

User32.dll

)]
static

extern
IntPtr FindWindowEx(IntPtr parent, IntPtr childe,
string
strclass,
string
strname); List
<
Point
>
SnowPoints
=

new
List
<
Point
>
(); List
<
int
>
SnowRate
=

new
List
<
int
>
(); Bitmap Bmp
=

new
Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); IntPtr DesktopHandle
=
IntPtr.Zero;
#region
public frmDesktopSnow()
//
构造函数

///

<summary>

///
构造函数
///

</summary>


public
frmDesktopSnow() { InitializeComponent();
this
.FormBorderStyle
=
FormBorderStyle.None; BtnStart.Size
=

new
Size(
100
,
70
); BtnClose.Size
=

new
Size(
100
,
70
); BtnStart.Location
=

new
Point(
0
,
0
); BtnClose.Location
=

new
Point(
101
,
0
); BtnStart.Text
=


点一下吧

; BtnClose.Text
=


关闭

;
this
.Size
=

new
Size(BtnClose.Right, BtnClose.Bottom);
this
.Opacity
=

0.8
; }
#endregion

#region
void SnowTimer_Tick(object sender, EventArgs e)
//
下雪计时器事件

///

<summary>

///
下雪计时器事件
///

</summary>

///

<param name=”sender”>
计时器本身
</param>

///

<param name=”e”>
计时器参数
</param>


void
SnowTimer_Tick(
object
sender, EventArgs e) { Graphics DesktopGraphics
=
Graphics.FromHwnd(DesktopHandle); String Text
=


圣诞快到了,希望大家身体健康!

;
if
(Convert.ToInt32(SnowTimer.Tag)
==

0
) DesktopGraphics.DrawString(Text,
new
Font(

宋体

,
10
),
new
SolidBrush(Color.Red),
new
PointF(Screen.PrimaryScreen.Bounds.Width
/

2



200
, Screen.PrimaryScreen.Bounds.Height
/

2
));
else
DesktopGraphics.DrawString(Text,
new
Font(

宋体

,
10
),
new
SolidBrush(Color.Green),
new
PointF(Screen.PrimaryScreen.Bounds.Width
/

2



200
, Screen.PrimaryScreen.Bounds.Height
/

2
)); SnowTimer.Tag
=

1


Convert.ToInt32(SnowTimer.Tag);
for
(
int
i
=

0
; i
<
SnowPoints.Count; i
++
) { DesktopGraphics.DrawImage(Bmp, SnowPoints[i].X, SnowPoints[i].Y,
new
Rectangle(SnowPoints[i], PbSnow.Size), GraphicsUnit.Pixel); SnowPoints[i]
=

new
Point(SnowPoints[i].X, SnowPoints[i].Y
+
SnowRate[i]);
if
(SnowPoints[i].Y
>
Screen.PrimaryScreen.Bounds.Bottom) SnowPoints[i]
=

new
Point(SnowPoints[i].X,
0
); DesktopGraphics.DrawImage(PbSnow.Image, SnowPoints[i]);
//
PbSnow.Image 小雪花图片

} DesktopGraphics.Dispose(); }
#endregion

#region
void BtnStart_Click(object sender, EventArgs e)
//
下雪

///

<summary>

///
开始下雪
///

</summary>

///

<param name=”sender”>
按钮本身
</param>

///

<param name=”e”>
按钮
</param>


void
BtnStart_Click(
object
sender, EventArgs e) { SnowPoints.Clear(); Random R
=

new
Random();
for
(
int
i
=

0
; i
<

50
; i
++
) { SnowPoints.Add(
new
Point(R.Next(Screen.PrimaryScreen.Bounds.Width), R.Next(Screen.PrimaryScreen.Bounds.Height))); SnowRate.Add(R.Next(
10
)); } ShowDesktop();
this
.WindowState
=
FormWindowState.Minimized; Thread.Sleep(
500
);
//
等待桌面完全显示

Graphics G
=
Graphics.FromImage(Bmp); G.CopyFromScreen(
new
Point(
0
,
0
),
new
Point(Screen.PrimaryScreen.Bounds.Left, Screen.PrimaryScreen.Bounds.Top),
new
Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)); G.Dispose();
this
.WindowState
=
FormWindowState.Normal; IntPtr P
=
FindWindow(

Progman

,

Program Manager

); P
=
FindWindowEx(P, IntPtr.Zero,

SHELLDLL_DefView

,
null
); DesktopHandle
=
FindWindowEx(P, IntPtr.Zero,

SysListView32

,
null
); SnowTimer.Interval
=

1
; SnowTimer.Enabled
=

true
;
//
开始下雪

}
#endregion

#region
void BtnClose_Click(object sender, EventArgs e)
//
关闭

///

<summary>

///
关闭
///

</summary>

///

<param name=”sender”>
窗口本身
</param>

///

<param name=”e”>
窗口参数
</param>


void
BtnClose_Click(
object
sender, EventArgs e) { ShowDesktop(); Close(); }
#endregion

#region
static void ShowDesktop()
//
显示桌面

///

<summary>

///
显示桌面
///

</summary>


static

void
ShowDesktop() { Type OleType
=
Type.GetTypeFromProgID(

Shell.Application

);
object
OleObject
=
System.Activator.CreateInstance(OleType); OleType.InvokeMember(

ToggleDesktop

, BindingFlags.InvokeMethod,
null
, OleObject,
null
); }
#endregion
} }

 

小雪花图片用网上有的小雪花矢量图jpg或bmp用photoshop把背景颜色的区域删掉镂空成透明保存成GIF然后导入PbSnow PictureBox控件

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37767.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注