[C# Winform] 利用C#开发的一款桌面程序---落雪---迎接2011
2010-12-31 14:26
309 查看
以程序员的方式迎接2011~~~
特此写了一款小型桌面程序,实现落雪的效果,并配有背景音乐
通过这个例子,也着实让我对windows的UI界面有了更多的理解
程序使用C#开发(因为项目原因,所以一直在写C#),不过在效果上没有用太多.NET的控件,而是大量使用了windows的API,这也让我弄明白了不少编程知识,呵呵,因为一直都不怎么会用这些windows的API
下面给出程序中使用的关键API函数:
在处理图片显示问题上,使用双缓冲技术,以保证动画效果流畅,也是为了避免闪烁现象
以上是一些比较关键的地方,其他的就很好实现了,呵呵,主要还是要弄懂windows界面的层次结构
这里给出结构分析:
桌面的结构:相当于图像处理中的四个图层,且是透明图层
按类名由前至里的排序为:
SysListView32
SHELLDLL_DefView
Progman
程序绘图时,是要在SysListView32这一层上绘制,即要获取SysListView32的句柄,进而获取其Graphics对象
最后,祝所有看到本文的朋友,元旦快乐,2011年快乐~~~~
程序已经上传我的资源中,供下载
特此写了一款小型桌面程序,实现落雪的效果,并配有背景音乐
通过这个例子,也着实让我对windows的UI界面有了更多的理解
程序使用C#开发(因为项目原因,所以一直在写C#),不过在效果上没有用太多.NET的控件,而是大量使用了windows的API,这也让我弄明白了不少编程知识,呵呵,因为一直都不怎么会用这些windows的API
下面给出程序中使用的关键API函数:
//FindWindow:用于查找windows窗口 [DllImport("User32.dll ", EntryPoint = "FindWindow")] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); //FindWindowEx:根据父窗口来查找子窗口 [DllImport("User32.dll ")] static extern IntPtr FindWindowEx(IntPtr parent, IntPtr childe, string strclass, string strname); //mciSendString: //使用MCI Command String多媒体设备程序接口播放音乐 public static uint SND_ASYNC = 0x0001; public static uint SND_FILENAME = 0x00020000; [DllImport("winmm.dll")] public static extern uint mciSendString(string lpstrCommand, string lpstrReturnString, uint uReturnLength, uint hWndCallback);
在处理图片显示问题上,使用双缓冲技术,以保证动画效果流畅,也是为了避免闪烁现象
//双缓冲 //获取当前应用的缓冲域 BufferedGraphicsContext current = BufferedGraphicsManager.Current; BufferedGraphics bg; //用桌面句柄创建缓冲区--DesktopHandle bg = current.Allocate(Graphics.FromHwnd(DesktopHandle), new Rectangle (0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)); Graphics g = bg.Graphics; //获取输入到缓冲区的Graphics对象 //.... //...向缓冲区绘制 //.... //将图形缓冲区的内容写入相关联的设备,这里即桌面 bg.Render(); bg.Dispose();//一定要释放资源
以上是一些比较关键的地方,其他的就很好实现了,呵呵,主要还是要弄懂windows界面的层次结构
这里给出结构分析:
桌面的结构:相当于图像处理中的四个图层,且是透明图层
按类名由前至里的排序为:
SysListView32
SHELLDLL_DefView
Progman
程序绘图时,是要在SysListView32这一层上绘制,即要获取SysListView32的句柄,进而获取其Graphics对象
最后,祝所有看到本文的朋友,元旦快乐,2011年快乐~~~~
程序已经上传我的资源中,供下载
相关文章推荐
- 桌面程序开发入门(WinForm with C#)
- C# 开发winform程序 手机短信群发系统
- C#开发简易winform计算器程序
- CnClock桌面时钟-Winform小程序开发
- mstsc 远程序桌面登录的 c#开发
- C# WinForm开发中使用XML配置程序
- 使用C#开发winform程序的界面框架
- (转载)远程序桌面登录的.NET(C#)开发
- C#环境下利用VS2017使用MapXtreme7.0.0开发桌面应用实例
- C#开发的WinForm程序自适应.Net2.0及.Net4.0(32位和64位版本)
- C#开发WinForm窗体程序时,如何禁止用户改变程序窗体的大小?
- 开发一款桌面程序。文件转换器
- 使用C#开发winform程序的界面框架
- (转)C#多国语言支持的WinForm程序开发
- C# 开发winform程序 手机短信群发系统
- 利用C#开发简单的阿里巴巴联系信息提取程序
- mstsc 远程序桌面登录的 c#开发
- 关于C# WinForm中“显示桌面后”,点击任务栏右下角图标还原的问题 - [IT技术] 2011-
- 远程序桌面登录的.NET(C#)开发
- 建立第一个directX程序--winform--在C#下利用DirectSound实现声音播放