• 我的 WinClock 项目系列之一 (概述)


    源起:
        三年前,当我还是一个学生的时候,同学在用一个类似雪狐迷你钟
        的小软件,具体叫什么现在忘记了,当时这个软件是收费的,不
        过他用的是破解版,呵呵,主要功能包括:
            1. 更换皮肤。
            2. 多种钟面属性(例如:总在最前、嵌入桌面、鼠标穿透)
            3. 可半透明镶嵌在桌面上,不影响其它操作
            4. 抗锯齿,显示更加平滑,美观
            我就拷贝下载网上的说明吧:
            1. 小巧、精致,半透明的镶嵌在桌面背景中 。
            2. 自带四十余种漂亮的皮肤,时钟更加个性!
            3. 半透明,且支持镶嵌在桌面上(按“显示桌面”按钮也无法吃掉她),
                不影响其它操作!
            4. 鼠标穿透功能,程序再也不会影响您的正常工作了 。
            5. 语音报时,并可设置整点、半点报时功能
            6. 超强抗锯齿,使得显示更加平滑,美观。
        为何不自己去实现一个这样的软件呢?当时我就有这样的想法,
        当时的想法,这样一个小东西做起来应该很简单的,这些基本功能实现就好了,
        当时我们正在选修 C#面向组件的开发这样的课程,于是自然采用了C#作为开发
        语言,那时候 Visual Studio 2005 的 Beta 版本刚刚可用,我们就这样开始了。
    实现:
        后来发现,直接在.Net Framework 里查找这些需要的功能,都很难找到或者效果
        很差,除了窗口置顶可以直接使用 Form.TopMost 设置之外。于是上网查资料,
        发现调用 Windows API 函数可以实现这些功能。当时查找了C#调用 API 函数的
        资料,倒也简单,只是有些类型的 Marshal 可能需要点儿技巧。
    细节:
        当时很快进入了细节,也没有考虑如何降低软件的耦合度,反正急于实现功能,
        整个程序实现在一个项目里面,生成后也就一个 Exe 文件。的确,通过查资料,
        像如何实现异形窗体这们的功能都有了可选的方案,当时找到两种方案,但是效果
        都不理想,别说放大窗体了,连按原始图片大小显示都会有明显的锯齿,这个问题
        真正解决是到了项目后期才找到解决方案的。
        不管怎么说,当时经过了将近一个月时间的摸索,一个还可以用的软件是出来了。
    重构:
        很快离开学校去工作了,虽然工作很忙,还是抽时间研究了设计模式,软件重构
        之类的东西,加上工作中也会学到一些东西,回头看看自己的小软件,很不满意,
        于是进行了一通重构。直到现在像点儿样子了。
    最近没事,有了把这个项目过程讲一讲的冲动,所谓麻雀虽小,五脏俱全。干
    脆写一个系列算了。大至计划如下:
        1. 概述
           介绍项目的背景,展示主要功能,提供可执行文件的下载。就是这次的内容了,
        2. 功能细节,在Windows API 里面查找需要的功能。
           主要讲一讲这些基本功能要用到哪些API函数,以及如何在 C# 里面调用他们。
           例如设计异形窗体的三种方式和各自己的优缺点,以及项目的决策,反锯齿等。
        3. Mediator模式的应用。
           讲述如何让把功能细节的实现分离到别的 class 中,以及如何让菜单工作等。
        4. Memento 模式的应用。
           讲述为何以及如何实现 Memento 模式,同时会对软件设置中的 Preview 功能
           进行介绍。
        5. Balloon提示和Service.
           讲述如何通过重绘设计一个通用气球提示,以及如何使用它。
        6. 持久化存储。
           讲述如何使用.Net 提供的序列化机制保存软件设置,如何通过反序列化重新
           加载这些设置。结合开源项目 SharpDevelop 的源码,讲述如何使用 XmlReader
           和 XmlWriter 实现对所有类型的持久化存储,以及如何用他来代替C#提供的
           序列化机制,同时还会指出SharpDevelop持久化存储现存的一个功能缺失,并
           通过简单的修改弥补这种缺失。
    下面是软件的一些截图, 让各位看客先有一个总体印象。




    我的 WinClock 软件下载
    这是微软技术的一贯特点,使用简单。但是如果要深入的话,还是要投入不少精力的
  • 相关阅读:
    Jquery+Ajax+Bootstrap Paginator实现分页的拼接
    推荐一款在线工具-程序员的工具箱
    推荐一款在线工具-程序员的工具箱
    Jquery+Ajax+Bootstrap Paginator实现分页的拼接
    JSP 基础语法
    jsp九大内置对象及四个作用域
    jdk 版本不一致导致的错误
    java虚拟机内存模型
    java 内存简介
    B2C
  • 原文地址:https://www.cnblogs.com/cxd4321/p/1211836.html
Copyright © 2020-2023  润新知