版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C# 实现桌面图片飘浮效果读大学时写的桌面飘着Love( 完全用 GDI+ 绘制的) ,现在想让桌面飘着圣诞老人,其实稍微研究下,大家都会写,于是我想让代码更优美点。如果想让桌面既飘着Love 又飘着圣诞老人,怎么办呢,象装饰模式?不过不是。如果我想让程序全部封装成dll 后,别人也能用很简单的代码进行扩展,怎么办呢?于是我定义好了整个结构,可以继承类然后写很简单的程序完成功能,无需修改我的类,可以支持运行时 热插拔要显示到桌面飘着的Fly (比如通过配置app.config ) .先看效果图吧:600) this.width = 600;attachimg(this, load);src_c
2、etemp= HYPERLINK /attachment.aspx?attac /attachment.aspx?attachmentid=11235christmas.jpg(168.12 K)2008-12-13 21:18:21 上面是飘着圣诞老人600) this.width = 600;attachimg(this, load);src_cetemp= HYPERLINK /attachment.aspx?attac /attachment.aspx?attachmentid=11236gdidiagram.jpg(107.10 K)2008-12-13 21:18:21 上面是飘着
3、LOVE600) this.width = 600;attachimg(this, load);src_cetemp= HYPERLINK /attachment.aspx?attac /attachment.aspx?attachmentid=11237together.jpg(139.79 K)2008-12-13 21:19:19 上面是飘着LOVE 和圣诞老人一起600) this.width = 600;attachimg(this, load);src_cetemp= HYPERLINK /attachment.aspx?attac /attachment.aspx?attachm
4、entid=11238rightclick.jpg(102.46 K)2008-12-13 21:19:19 上面是右键关于或者退出600) this.width = 600;attachimg(this, load);src_cetemp= HYPERLINK /attachment.aspx?attac /attachment.aspx?attachmentid=11239configure.jpg(135.58 K)2008-12-13 21:20:23 上面是关于600) this.width = 600;attachimg(this, load);src_cetemp= HYPERL
5、INK /attachment.aspx?attac /attachment.aspx?attac hmentid=11240 classDiagram.jpg(67.73 K) 2008-12-13 21:20:23 上面是类图600) this.width = 600;attachimg(this, load);src_cetemp= HYPERLINK /attachment.aspx?attac /attachment.aspx?attachmentid=11241structure.jpg(15.82 K)2008-12-13 21:26:09 上面是程序结构图由于多种原因,我电脑W
6、ORD 都没,所以没什么好的画图工具好表达上面的类图的关系。其中 ProxyImage 类中采用了策略模式对采用什么图片进行出来。在上面类图中:第一个注释里说: “ MainForm 发送多个装载图片的命令给 ProxyImage, 而 ProxyImage 只返回一个图片给MainForm 。 ” 为什么是返回一个图片呢, 原因有两点:第一:一个ILIST 的一个对象只能装一个。第二:如果用其他方式返回两个, 则会出现这种情况: 如果显示 LOVE ,桌面可以飘100 个,但如果桌面同时飘LOVE 和圣诞老人,则桌面会飘着: 200 个,如果以后扩展,桌面飘着很多个,那桌面将会成为: N*1
7、00 个,这个肯定不能这样。于是综合一些设计模式,我改造了下,变成现在我的程序的样子了。如果我的程序全部编译为类库 DLL 文件了, 要想扩展也非常方便。有两种情况:第一:用 GDI+ 绘制图片,比如我这里的 LOVE 。第二:直接用图片。第一种情况,扩展的类继承GdiImage 抽象类,重载DrawImage 方法, 这个方法没有其它任何额外的代码, 只做GDI+ 绘制;第二种情况,扩展的类直接继承IImage 接口,实现GetBitmap 方法就行了。如果想让桌面飘着的物体在运行时加载它,则可配置相应的配置文件则可。程序中起桥梁作用的 proxyImage 类的代码如下: proxyIma
8、ge 类代码 #region版权/*版权归 Lawson 所有QQ : 313769823Blog:*/#endregionusing System;using System.Collections;using System.Collections.Generic;using System.Drawing;using System.Text;namespace Main/ / 负责桌面飘动的图片处理/ public class ProxyImageprivate static Hashtable imageList = new Hashtable();/ / 默认构造函数/ public Pr
9、oxyImage()/无操作/ / 添加图片种类/ / 图片类型 public static void AddImage(IImage image)imageList.Add(imageList.Count + 1, image);/ / 获取图片/ / 图片 public static Image GetImage()object obj = null;Image result = null;if (imageList.Count = 1)obj = imageList1;elseRandom random = new Random();obj = imageListrandom.Next(1,imageList.Count);if (obj = null)/防止扩展图片时,引用生成图片类而没先实例化它throw new Exception( 添加生成图片类时 请先实例化该类);obj = obj as IImage;if (obj != null)result = (IImage)obj).GetBitmap();else时由错throw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年陕西省咸阳市沣西实验学校七年级(下)期中数学试卷(含答案)
- 复合地板安装施工方案及技术措施
- 本科大学英语听说课程高阶教案:智慧课件设计与教学策略
- 本科三年级《公共卫生政策:理论与实践》单元教学设计
- 北师大版初中数学七年级上册《代数式》教学设计
- 某项目急救特别重大事故措施
- 初中八年级历史与社会《魏晋南北朝时期的民族交融与文化重生》教学设计
- 钢筋弯曲机安装调试保证措施
- 《快乐的动物》(“倍”的概念建构)教案
- 职工浴室管理专项方案
- 建筑工人临时用工协议书
- 省属国有独资公司章程(模板)-国有企业公司章程
- 代加工洗煤合同范本
- 2024年浙江省普通高中学业水平适应性考试历史试题(含答案)
- 生命哲学:爱、美与死亡智慧树知到期末考试答案章节答案2024年四川大学
- 数字贸易学 课件 第12章 消费者行为与权益
- 扫描电镜课件
- 2022年物业项目经理岗位招聘考核试题库(附含答案)
- 医院质量与安全管理架构图
- 张北凯嘉罗矿业有限公司河北省张北县石头囫囵闪锌矿矿山地质环境保护与土地复垦方案
- 电子证据诉讼实务培训
评论
0/150
提交评论