C# 制作屏保(图片位置随机变化)
最近无所事事,闲着无聊,在网上翻看资料时碰巧看到了屏保制作,根据大神的思路也理解到屏保也不是很难。因此根据我自己的理解,动手谢了一个屏保。
首先,打开VS2010创建一个Windows窗体应用程序,名称可以随便取(我取名ScreeTest),程序创建成功后,VS2010自动打开Form1窗体,由于屏保运行时界面布满整个屏幕,而且在任务管理器中也没有对应的exe程序,因此我们需要设置窗口属性:FormBoderStyle属性为None,ShowInTaskbar属性为False,WindowState属性为Maximized,AutoScaleMode属性为Font。然后在窗体中拖入控件,label(1个)-显示当前时间、timer(2个)-刷新时间、图片位置变化刷新,控件位置随便放。设置timer属性Interval为100。好了,界面布局就这样。
然后就是后台程序的编写。下面我直接上码:
1、设置动态时间:
public partial class Form1 : Form
{
public Form1 ()
{
InitializeComponent();
this.DoubleBuffered = true;//设置本窗体双缓存
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
timer1.Start();
timer2.Start();
} private void Form1 _Load(object sender, EventArgs e)
{
//窗体单击时退出程序
this.Click += new System.EventHandler(Exit);
this.lblTimeNow.Location = new System.Drawing.Point((this.Size.Width / ), this.Size.Height / +);//设置label显示位置屏幕中上方
} private void Exit(object sender, EventArgs e)
{
Application.Exit();
}
private void timer1_Tick(object sender, EventArgs e)
{
lblTimeNow.Text = DateTime.Now.ToString();
} private void Form1 _Deactivate(object sender, EventArgs e)
{
Application.Exit();
}
}
}
2、动态图片设置
//设置全局变量用于切换图片位置
private BitMap bp=new BitMap("Blue.jpg");//设置图片
private Random rd=new Random();
private int x=;
private int y=; private void timer2_Tick(object sender,EventArgs e)
{
//获取屏幕大小
Rectangle rt =Screen.GetWorkingArea(this);
x=rd.Next(rt.Width);
y=rd.Next(rt.Height);
if(x+bp.Width>rt.Width)
{
x=rt.Width-bp.Width;
}
if(y+bp.Height>rt.Height)
{
y=rt.Height-bp.Height;
}
this.Invalidate();
}
private void Form1_Paint(object sender,PaintEventArgs e)
{
e.Graphics.DrawImage(bp,x,y,bp.Width,bp.Height);
}
这样,程序就写完了,编译生成运行。效果就出来了
C# 制作屏保(图片位置随机变化)的更多相关文章
- C#制作简易屏保
		
前言:前段时间,有个网友问我C#制作屏保的问题,我瞬间懵逼了(C#还可以制作屏保!).于是我去查阅相关资料,下面把C#如何制作屏保的过程及我学习过程的心得也记录下来,希望对需要的人能有帮助. 基本思路 ...
 - C#制作简易屏保(转)
		
C#制作简易屏保[原创] 原始网址: http://www.cnblogs.com/drizzlecrj/archive/2006/10/06/522182.html 2006-10-06 16:25 ...
 - WPF 制作 Windows 屏保
		
分享如何使用WPF 制作 Windows 屏保 WPF 制作 Windows 屏保 作者:驚鏵 原文链接:https://github.com/yanjinhuagood/ScreenSaver 框架 ...
 - wpf 制作播放视频的屏保程序、而且能分屏显示
		
这个程序用到了WPF里 “visual_Brush”(主要是为了实现分屏显示) , “UserControl” ,这两个知识点: 在屏保状态下播放指定文件夹下的视频,而且能分屏显示: 把编译好的屏保 ...
 - 一个仿windows泡泡屏保的实现
		
一个仿windows泡泡屏保的实现 有天看到有人在百度知道上问windows 泡泡屏保该怎么用C#做,一时有趣,就做了一个出来,对于其中几个要点总结如下: 一,屏保程序的制作要求 屏保程序的扩展名是. ...
 - Tkinter 项目-屏保
		
参考教程,以及网上资料,针对小白更好理解 关于tkinter的屏保涉及的知识点和思想 项目分析: 屏保启动方式:手动,自动 敲击键盘或者移动鼠标后,或者其他引发事件,则停止 如果屏保是一幅画的话,则没 ...
 - 【小梅哥FPGA进阶教程】第十四章 TFT屏显示图片
		
十四.TFT屏显示图片 本文由杭电网友曾凯峰贡献,特此感谢 学习了小梅哥的TFT显示屏驱动设计后,想着在此基础上通过TFT屏显示一张图片,有了这个想法就开始动工了.首先想到是利用FPGA内部ROM存储 ...
 - 重新想象 Windows 8.1 Store Apps (92) - 其他新特性: CoreDispatcher, 日历, 自定义锁屏系列图片
		
[源码下载] 重新想象 Windows 8.1 Store Apps (92) - 其他新特性: CoreDispatcher, 日历, 自定义锁屏系列图片 作者:webabcd 介绍重新想象 Win ...
 - 星际SC地图制作中生成随机位置,也包括所有需要随机的效果
		
星际SC地图制作中生成随机位置,也包括所有需要随机的效果 利用单位 kakaru T 开头那个, kakaru是随机变化位置 注意kakaru的放置位置和占用格子大小,kakaru周围放上LOCATI ...
 
随机推荐
- AOP及专有名词通俗解答
			
AOP面向切面编程,是一种编程思想,并不是Spring专有,Spring是封装代理模式完成,之前的博客中也写到了关于AOP的文章,Filter和代理,请见<以此之长,补彼之短----AOP(Fi ...
 - Oracle12c:支持通过创建identity columen来实现创建自增列
			
oracle12c之前如果需要创建自增列必须要通过sequence+trigger来实现.但是oracle12c已经可以像mysql,sqlserver一样通过identity column来设置自增 ...
 - Spring(三):Spring整合Hibernate
			
背景: 本文主要介绍使用spring-framework-4.3.8.RELEASE与hibernate-release-5.2.9.Final项目整合搭建的过程. 开发环境简介: 1).jdk 1. ...
 - Java:逐行读、写文件、文件目录过滤的用法
			
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...
 - JSON序列化类
			
'''pyhton的dict对象可以直接序列化为JSON的{},不过很多时候 我们更喜欢用class表示对象,比如定义Student类,然后序列化''' import json class Stude ...
 - jQuery系列 第七章 jQuery框架DOM操作
			
第七章 jQuery框架的选择器 jQuery框架继承和优化了JavaScript访问DOM对象的特性,我们使用jQuery框架提供的api可以更加方便的操作DOM对象. 7.1 创建DOM节点 使用 ...
 - Spting +Spring MVC+spring date jsp +hibernate+jq
			
controller 控制页面跳转 处理前台后台数据交互 访问servicedao层:@Repository 数据库访问层 增删改查 jpa规范了hibernate jap仓库 jpa自动解析 方法名 ...
 - 关于字数太多直接变成省略号的方法css
			
文字超出限制的宽度自动隐藏,并且变为省略号 这是之前写的,现在要做一个两行的 于是万能找百度,居然真的有这个方法: 于是,我就变成了搬运工:○( ^皿^)っHiahiahia- http://blog ...
 - Java四种线程池的学习与总结
			
在Java开发中,有时遇到多线程的开发时,直接使用Thread操作,对程序的性能和维护上都是一个问题,使用Java提供的线程池来操作可以很好的解决问题. 一.new Thread的弊端 执行一个异步任 ...
 - [LeetCode] Employee Importance 员工重要度
			
You are given a data structure of employee information, which includes the employee's unique id, his ...