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

rayyu1989 2012-07-29 04:27:51
加精
先AD下桌控:
--------------------------------------------------------
v1.3 更新 网站及下载:http://www.370b.com/
--------------------------------------------------------
1.引入皮肤概念,界面颜色随你调,百变桌控随你搭;
1.一键换肤
2.界面微调
2.设置添加》搜索后是否清除搜索框关键词;
3.反馈意见接口优化;
4.已知BUG修正.


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

比如 label,不想重绘文字 简单的处理,鼠标悬停变色:

Friend Class MyZKSkinLinkLabel
Inherits Label
Private ishover As Boolean
Protected 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 Sub
End Class

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:


一键换肤界面:


一键换肤效果:











...全文
623 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hirisw 2012-08-06
  • 打赏
  • 举报
回复
怎么没见开源?代码呢,在哪里下载
续写经典 2012-08-01
  • 打赏
  • 举报
回复
支持一下
续写经典 2012-08-01
  • 打赏
  • 举报
回复
楼主辛苦了
猴头 2012-08-01
  • 打赏
  • 举报
回复
好东西啊
Delta 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
挺好的
[/Quote]支持一下。
rayyu1989 2012-08-01
  • 打赏
  • 举报
回复
可以卸载的,在控制面板里 , 安装目录应该是2个exe
使用的是vs的安装项目部署
[Quote=引用 23 楼 的回复:]

发现无法卸载,看了半天发现就一个EXE,不知道写注册表没有。。。
[/Quote]
SonngChen 2012-08-01
  • 打赏
  • 举报
回复
发现无法卸载,看了半天发现就一个EXE,不知道写注册表没有。。。
lonet 2012-08-01
  • 打赏
  • 举报
回复
基本上用不着,不过还是帮顶下!
free191 2012-07-30
  • 打赏
  • 举报
回复
不错的
q107770540 2012-07-30
  • 打赏
  • 举报
回复
GOOD
rayyu1989 2012-07-30
  • 打赏
  • 举报
回复
xp 下 开启 主界面会消失
v1005修复了 汗 研究了好久
ycproc 2012-07-29
  • 打赏
  • 举报
回复

挺好的
rayyu1989 2012-07-29
  • 打赏
  • 举报
回复
野比叔可以下载桌控 看看里面我写的 拾色器的效果[Quote=引用 11 楼 的回复:]

[/Quote]
Conmajia 2012-07-29
  • 打赏
  • 举报
回复
SocketUpEx 2012-07-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

能把自己学习到得东西分享给大家是最可贵的。

不像有些人天天打架
[/Quote]

你分享了吗?


z569362161 2012-07-29
  • 打赏
  • 举报
回复
能把自己学习到得东西分享给大家是最可贵的。

不像有些人天天打架
SocketUpEx 2012-07-29
  • 打赏
  • 举报
回复
我晕
原来是说搭配颜色啊
我以为楼主名叫"配色"
然后caozhy是夸楼主写程序厉害呢
搞错搞错

[Quote=引用 7 楼 的回复:]

哈哈 其实我配色很烂的 美工还真没学过
你看我网站的界面就知道了

一键换肤的界面 颜色是基于某个color 不同alpha 混合出来的

对美工不在行 所以提供了右边界面的微调

引用 3 楼 的回复:

配色还行,至少让人看上去是学过一点的。

学过的和没学过的是不一样的。
[/Quote]


rayyu1989 2012-07-29
  • 打赏
  • 举报
回复
哈哈 其实我配色很烂的 美工还真没学过
你看我网站的界面就知道了

一键换肤的界面 颜色是基于某个color 不同alpha 混合出来的

对美工不在行 所以提供了右边界面的微调

[Quote=引用 3 楼 的回复:]

配色还行,至少让人看上去是学过一点的。

学过的和没学过的是不一样的。
[/Quote]
SocketUpEx 2012-07-29
  • 打赏
  • 举报
回复
我塞
还没说完
真加精了


rayyu1989 2012-07-29
  • 打赏
  • 举报
回复
3. 界面.Refresh (这里双缓冲很重要 重载控件 最好设置双缓冲,以及窗体双缓冲)

这里的refresh 指的是 当颜色有更改时才调用,颜色无更改无需手动refresh 新手们别看岔了哦
加载更多回复(4)

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧