惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
P
Privacy International News Feed
T
Tenable Blog
NISL@THU
NISL@THU
P
Proofpoint News Feed
Project Zero
Project Zero
T
Threatpost
I
Intezer
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 三生石上(FineUI控件)
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
T
Threat Research - Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
G
GRAHAM CLULEY
Cisco Talos Blog
Cisco Talos Blog
S
Schneier on Security
J
Java Code Geeks
Know Your Adversary
Know Your Adversary
AWS News Blog
AWS News Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Exploit Database - CXSecurity.com
WordPress大学
WordPress大学
A
Arctic Wolf
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Palo Alto Networks Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Cisco Blogs
爱范儿
爱范儿
Jina AI
Jina AI
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
C
CXSECURITY Database RSS Feed - CXSecurity.com
罗磊的独立博客
Scott Helme
Scott Helme
大猫的无限游戏
大猫的无限游戏
C
CERT Recently Published Vulnerability Notes
月光博客
月光博客
博客园 - 【当耐特】
P
Privacy & Cybersecurity Law Blog
V
Vulnerabilities – Threatpost
L
LINUX DO - 热门话题
S
SegmentFault 最新的问题
S
Securelist
美团技术团队

博客园 - 萧萧空间

Windows 2003,XP安装Windows Phone 7 从海量数据中找出中位数(转) 界面开发(五)--- 界面优化 界面开发(四)--- 还窗体的新面貌 界面开发(三)--- 设置窗体的Region 界面开发(二)--- NativeWindow 界面开发(一)--- Hook所有的窗体 ExtJs扩展之GroupPropertyGrid ExtJs之带图片的下拉列表框 寻找第K大的数的方法总结 我自己的ColorSpy Office 2010 beta版安装 Java反编译工具JD ExtJs Grid Drag Drap Splash窗体(ProgressWindowForm修改) 异步窗体实现操作进度(ProgressWindow) 线程封装组件(BackgroundWorker)和线程(Thread) 多线程开发 NSIS 的使用心得
界面开发概述
萧萧空间 · 2010-03-17 · via 博客园 - 萧萧空间

      每个软件都要有自己的软件界面,对于软件开发来说,软件界面不一定是最重要的,但是也是相当重要的。一款软件要是可以在界面上做好,吸引了客户的眼球,那这款软件也就相对成功了一半。

      现在各行各业的软件都添加了自己的皮肤色彩,显示出了不同的特点。例如QQ,MSN,Foxmail等等,这些软件都修改了自己软件的界面,将自己的界面化做的很完善,很漂亮。使用起来感觉很舒服。我也是一个做软件的,于是也打算将自己的软件做的像那些软件产品一样漂亮,于是乎在网上寻求自己软件界面的解决方案。当然很多很多。下面列举几个:

      一、使用皮肤组件(IrisSkin2.dll)

      这个是东日软件公司开发的一套软件界面。IrisSkin 是为Microsoft Visual Studio.NET开发的最易用的界面增强.NET(WinForm)组件包。它能完全自动的为您的应用程序添加支持换肤功能,甚至不需要更改您的设计好的Form以及添加一行代码!您也不再需要花费很多时间来使得自己的应用程序更漂亮。当然他是收费的,但是网上很多具有破解版,当然我也下载了一套,使用起来相当的方便。

      下载地址:/Files/zhjp11/皮肤/Irisskin.rar

      二、自定义开发

      这个就比较难了,要了解很多关于Windows开发的内容,其中有两种做法,一种就是使用自定义的皮肤Form和Button等所有的空间,继承.net Framework提供的控件中自己使用的大部分,然后扩展其中的WndProc方法或者其他的一些方法,这是市最普遍的一种方式。另外就是使用IrisSkin的方法,使用NativeWindow这个底层的类,进行Hook编程。主要的例子如下:

      1、苏飞的博客:

      http://www.cnblogs.com/sufei/archive/2010/03/13/1685236.html

      2、CsharpWin中的皮肤

      http://www.csharpwin.com/csharpresource/2992.shtml

      这两个写的都非常好,让我受益匪浅。

      总结了以上的皮肤开发,我了解的到,所谓的皮肤开发无非就是使用了图片、颜色等内容将窗体进行了重绘或者就是覆盖,也就是重载了WndProc中的Paint,NCPaint等等操作。对于Winform来说,一个窗体主要分为两块,即Non Client Area和Client Area,如下图:

      

      简单的说就是对Client Area和Non Client Area的绘制。而Form中的WndProc的Paint,NCPaint就是完成这样的操作。

     3、我的实现方式。

     我的实现方式主要研究了苏飞和CshaorpWindow的两个程序,还有就是查看了IrisSkin的反编译源代码,我觉得实现的方式还是使用IrisSkin的方式比较好,IrisSkin的实现是使用了本地的一个简单的类NativeWindow,这是是一个可以实现简单的窗体等的注册,也就是Hook。我按照了这种方法,写了一个简单的程序。基本上可以实现IrisSkin的内容,使用的方式和IrisSkin的使用方式一样,都是在窗体中添加一个SkinEngine的Component,这样窗体就会显示了Office2007的样式,如下图所示:

     

      现在主要实现了在窗体上的Label可以显示为皮肤的颜色,但是对于对话框中的颜色还没有进行处理。还需要很多的处理,包括皮肤的设计和窗体中各个控件的设计。我会将在后续专题中写相关的内容。
      源码如下:SkinEngines2010-03-17.rar