Winform换肤原理

原创 2011年10月18日 17:48:42
        前两天跟着做村级节水系统,在其中遇到了换肤功能的实现。所以,想具体了解一下换肤原理。

        跟踪代码,Winform换肤的实现主要是读取换肤的配置文件,然后重绘所有所有窗体以及窗体中的所有控件,大致回应WM_PAINT和WM_NCPAINT。

        从网上获取大量资料,发现做这部分内容,需要掌握两个技术点:其一是GDI+(图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出),其二是API(Windows API是一套用来控制Windows的各个部件的外观和行为的一套预先定义的Windows函数)。

        根据不同的对象,换肤可以分为窗体换肤和控件换肤。无论是哪种换肤,它们实现的基本原理都是通过拦截Windows消息,绘制自己想要的效果,再用自己绘制的把系统的覆盖掉。

        1. 控件内部滚动条的实现原理

        滚动条换肤的难点在于无论怎么拦截Windows消息,都无法阻止系统去勾绘滚动条。若要系统不对其进行绘制,一定要接管滚动条消息的管制和描绘,Windows给出了有关滚动条的API:

       GetScrollInfo——该函数获取滚动条的参数:滚动条位置的最值,页面大小,滚动按钮的位置

       SetScrollInfo——该函数设置滚动条的参数:滚动条位置的最值,页面大小,滚动按钮的位置

       在处理的过程中,需要处理几个方法,包括Value值、鼠标事件和MoveThumb方法。

       2. 菜单的实现原理

       首先,获取菜单句柄。给菜单窗口发送MN_GETHMENU这个信息就可以获取了

       其次,窗口标题栏。题目栏在元素转变时,系统会自动绘制的。如果把标题栏格调WS_CAPTION去掉,会造成许多项目失效。

 

       说明:消息,就是指Windows发出的一个通知,告诉我们应用程序的某个事情发生了,如:单击鼠标、改变窗口尺寸等。消息本身作为一个记录传递给应用程序,这个记录中包含了消息的类型以及其他信息。

跟我学XSL(四)

  XML技术的优势之一就在于数据输出的可选择性,即选择需要的数据输出。前面我们所讲到的选择模式语句:、及只是简单的选取通过”/”符号层层到达的节点,如果我们对XML数据不需要全部输出,而只需要其中的...
  • ghj1976
  • ghj1976
  • 2001-06-01 16:26:00
  • 1788

c# winform换肤(含源码)包含winform皮肤64套

  • 2015年10月03日 12:00
  • 4.64MB
  • 下载

C# Winform 窗体美化(一、IrisSkin 换肤库)

IrisSkin 换肤库IrisSkin 是为Microsoft Visual Studio dotNET开发的最易用的界面增强dotNET(WinForm)组件包。能完全自动的为应用程序添加支持换肤...
  • myinc
  • myinc
  • 2017-04-14 23:22:05
  • 6048

Winform 换皮肤

winform换肤流程如下: (1)程序入口,添加以下代码: //换肤 private void Skinjsj() { DevExpr...
  • u013816709
  • u013816709
  • 2015-04-27 15:14:15
  • 1312

用C#实现换肤功能 - winform

文章来自:http://tech.ddvip.com/2008-11/122750522694589.html引言: 谁都希望自己的应用程序能让人留下一个深刻的印象,让自己的程序窗体有一件与众不同的"...
  • weboscar
  • weboscar
  • 2009-11-25 15:46:00
  • 372

android之换肤原理解读

如下是解读demo的链接,自行下载 https://github.com/fengjundev/Android-Skin-Loader 由于是开源的,而且对于想了解换肤功能的童鞋这个demo实...
  • zhongwn
  • zhongwn
  • 2016-10-22 17:21:59
  • 3512

Android中插件开发篇之----应用换肤原理解析

一、前言今天又到周末了,感觉时间过的很快呀.这周媳妇生气了,所以就不能和她happy了,那只能写blog了。那么今天就来看看应用的换肤原理解析。在之前的一篇博客中我说道了Android中的插件开发篇的...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2015-08-15 13:09:09
  • 23041

Android 换肤原理分析和总结

Android 换肤资源的概括一个apk文件,实质为为zip文件,而对于Android来说,应用的安装的过程,其实就是一个复制过程,将第三方应用apk文件复制到/data/app目录,只不过中间涉及一...
  • zhi184816
  • zhi184816
  • 2016-12-02 17:25:31
  • 4300

WINDOWS 换肤的原理及解析

关于软件换肤原理其实非常简单,就是hook + subclass, 替换窗口过程,自己重写界面绘制,基本上就是响应WM_PAINT, WM_NCPAINT消息。但难点就在绘制的处理上,Windows标...
  • netanimals
  • netanimals
  • 2010-05-29 04:42:00
  • 1995

Winform窗体皮肤&动画效果

  • 2015年01月06日 16:55
  • 379KB
  • 下载
收藏助手
不良信息举报
您举报文章:Winform换肤原理
举报原因:
原因补充:

(最多只允许输入30个字)