当前位置: 代码迷 >> .NET面试 >> (winform)基于net2.0/4.0写的小工具《桌控1.3》 论肌肤控件的制作 抛砖引玉 欢迎讨论
  详细解决方案

(winform)基于net2.0/4.0写的小工具《桌控1.3》 论肌肤控件的制作 抛砖引玉 欢迎讨论

热度:134   发布时间:2016-05-02 20:09:56.0
(winform)基于net2.0/4.0写的小工具《桌控1.3》 论皮肤控件的制作 抛砖引玉 欢迎讨论
先AD下桌控:
--------------------
  v1.3 更新 网站及下载:http://www.370b.com/
--------------------
1.引入皮肤概念,界面颜色随你调,百变桌控随你搭;
  1.一键换肤
  2.界面微调
2.设置添加》搜索后是否清除搜索框关键词;
3.反馈意见接口优化;
4.已知BUG修正.


--------------------
  我的换肤的思路(不想用网上的别人开发的控件,自己瞎写 欢迎交流)
--------------------
1. 颜色统一在一个类里
2. 自定义继承控件 重载 OnPaintBackground 或 OnPaint 重绘的颜色从1中取
3. 界面.Refresh (这里双缓冲很重要 重载控件 最好设置双缓冲,以及窗体双缓冲)

比如 label,不想重绘文字 简单的处理,鼠标悬停变色:
VB.NET code
Friend Class MyZKSkinLinkLabel    Inherits LabelPrivate ishover As BooleanProtected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)        If ishover Then            MyBase.ForeColor = MySkinHelper.Current.LinkHoverColor        Else            MyBase.ForeColor = MySkinHelper.Current.LinkColor        End If        MyBase.OnPaint(e)    End Sub    Protected Overrides Sub OnMouseEnter(e As System.EventArgs)        ishover = True        MyBase.ForeColor = MySkinHelper.Current.LinkHoverColor    End Sub    Protected Overrides Sub OnMouseLeave(e As System.EventArgs)        ishover = False        MyBase.ForeColor = MySkinHelper.Current.LinkColor    End SubEnd Class

C# code
internal class MyZKSkinLinkLabel : Label{    private bool ishover;    protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)    {        if (ishover) {            base.ForeColor = MySkinHelper.Current.LinkHoverColor;        } else {            base.ForeColor = MySkinHelper.Current.LinkColor;        }        base.OnPaint(e);    }    protected override void OnMouseEnter(System.EventArgs e)    {        ishover = true;        base.ForeColor = MySkinHelper.Current.LinkHoverColor;    }    protected override void OnMouseLeave(System.EventArgs e)    {        ishover = false;        base.ForeColor = MySkinHelper.Current.LinkColor;    }}


其他重绘原理如上 


--------------------
  桌控界面一览:
--------------------

主界面1:


主界面2:


一键换肤界面:


一键换肤效果:













------解决方案--------------------
开源了吗?
怎么发非技术区了?
发到技术区
又一个加精帖了



------解决方案--------------------
配色还行,至少让人看上去是学过一点的。

学过的和没学过的是不一样的。
------解决方案--------------------
能把自己学习到得东西分享给大家是最可贵的。

不像有些人天天打架
------解决方案--------------------

------解决方案--------------------

挺好的
------解决方案--------------------
不错的
------解决方案--------------------
GOOD
------解决方案--------------------
帮顶!
------解决方案--------------------
探讨
挺好的

------解决方案--------------------
好东西啊
------解决方案--------------------
  相关解决方案