C#制作简易屏幕保护

下面就介绍一下如何利用C#制作屏幕保护。
打开Visual Studio.net,建立一个windows项目。这次的屏保是模仿Windows 7自带的一个屏幕保护。

C#制作简易屏幕保护_第1张图片

把窗口的属性设置一下:
1.首先把 WindowState 设置为 FormWindowState.Maximized 这样窗口就可以在打开之后呈现最大化的状态。
2.把TopMost 设置为true,这样使得窗口处于最顶层,就是所谓的“永远在前”,相信用过千千静听,金山词霸等软件的朋友应该熟悉。
3.把FormBorderStyle 设置为FormBorderStyle.None ,这样窗口就没有边框,即没有了标题栏,周围的一圈边框。也就省去了一个个去掉MaximizeBox ,MinimizeBox了。
4.把BackColor设置为Color.Black, 这样窗口背景色就变成黑色了
5.ShowInTaskBar 设置为false,(这个步骤可以省去,本身最大化就看不到任务栏了)
其他的属性修改都是多余了,当然把name等等类似改改也行,总之,上面5个(严格的说4个)弄好了,UI方面就设计完毕了。

也可以在form_load中添加如下代码:

WindowState = FormWindowState.Maximized; this.TopMost = true; this.FormBorderStyle = FormBorderStyle.None; this.BackColor = Color.Black; this.ShowInTaskbar = false;
下面拖动一个timer控件进来,将其Enabled属性设置为true,Interval设置为10000(因为以milliseconds为单位,所以这里设置为10,000,也就是10s)。
加timer控件是为了每隔一定的事件触发一个事件。因此给timer加一个事件,点击Solution Explorer 上面的闪电图标,添加唯一的一个Tick事件。
下面就开始设计算法了,其实也是再简单不过了,随机产生一个点,然后再该处绘制预先准备好的图片。(如果为了好看点,可以设置坐标之间的关系)

private readonly int screenWidth; private readonly int screenHeight; private Bitmap bitmap; private Random random = new Random(); private int x = 0; private int y = 0; Rectangle rect = Screen.PrimaryScreen.Bounds;


增加若干成员变量, 挺有self-documenting的味道,我就不过多解释了,前两个是标志屏幕的宽度和高度,
然后是一个位图对象,存储预先准备的图片,这里是一张bitmap。random是一个随即类对象,用来产生随机点的。再下面分别是产生的随机点的x,y坐标。
构造函数内添加

 

//获取屏幕的宽度,高度 screenWidth = rect.Width; screenHeight = rect.Height; string currPath = System.Environment.CurrentDirectory + "//Win7.bmp"; bitmap = new Bitmap(currPath, true); 


第一句话是用来获得整个显示器的边界范围。然后分别把宽度和高度赋值给成员变量。
注:Screen类提供了一些与显示器相关的属性,感兴趣的朋友可以参阅MSDN
下面填补Tick事件

private void timer1_Tick(object sender, EventArgs e) { x = random.Next(screenWidth); y = random.Next(screenHeight); if (x + bitmap.Width > screenWidth) { x = screenWidth - bitmap.Width; } if (y + bitmap.Height > screenHeight) { y = screenHeight - bitmap.Height; } this.Invalidate(); }


上面是获取一个x,y坐标分别不大于显示器的宽度和高度的点。为了美观一点,判断图片是否超过屏幕边界,对x,y进行了一些处理, 不是很难,相信大家都能看懂。最后刷新屏幕,调用paint事件。

public void ScreenProtect_Paint(object sender,PaintEventArgs e) { e.Graphics.DrawImage(bitmap, x, y, bitmap.Width, bitmap.Height); }  

你可能感兴趣的:(timer,windows,object,String,C#,Random)