http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 36500|回复: 24
打印 上一主题 下一主题

[Winform] C#制作高仿360安全卫士窗体<一>

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-4 19:40:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
开始写这一系列博客之前先要向大家说声抱歉,放肆雷特建立很久却很少有更新。当然博客人气也不旺,大部分都是看的人多评论收藏的人少。一直想要改变这种状态,正好赶上了最近工作上做了一个高仿360安全卫士窗体。所以将开发历程分享出来,一来希望能和大家交流共同学习成长;二来希望自己的放肆雷特能有人光顾。
这一系列的文章所用到的技术首先要感谢苏飞大哥,我也是在很早以前看了他的QQ皮肤制作文章之后得到的灵感和一些相关知识。在这里帮他的C#论坛打个广告,里面有不少比较有用的资料。苏飞大哥也是很用心的打理这个论坛,论坛地址http://www.sufeinet.com/
说了这么多也该进入主题了,首先为了让大家有兴趣看下去而且认同我开发的这个皮肤,所以先传上本程序的界面截图(不喜勿喷)。同时本人也先声明,本人属屌丝一枚,想法和思路可能比较落后,如果你有比较不错的想法和思路可以在本论坛中寻找本人qq或评论本文。

第一章:360安全卫士窗体素材提取
360安全卫士的窗体使用的素材比之前QQ的素材更容易提取首先安装360安全卫士,如果怕自己电脑中毒的请使用虚拟机进行安装。在这里不提供下载链接。安装好之后打开安装目录,我这里以安装到C盘为准:
C:\Program Files (x86)\360\360safe\Config\newui\themes\default
打开后,将default_theme.ui文件拷贝出来。再将它的后缀改名为rar。之后的操作你懂的呀。。操作之后得到

第二章:360安全卫士风格按钮开发
得到以上素材之后开始正式的编码,第一个要开发的控件是Button控件,为什么呢?因为窗体上的关闭、最大化、最小化这些按钮都可以使用。系统里面用到的WinApi类我就不放上来了,网上一搜一大把,如果有需要的可以单独向我索取。写按钮前,先枚举该按钮的所有状态,我这里定义5个状态,应该比较全了:
[code=csharp]/// <summary>
/// 枚举按钮状态
/// </summary>
public enum State
{
     Normal = 1,//按钮默认时
     MouseOver = 2,//鼠标移上按钮时
     MouseDown = 3,//鼠标按下按钮时
     Disable = 4,//当不启用按钮时(也就是按钮属性Enabled==Ture时)
     Default = 5//控件得到Tab焦点时
}[/code]
重绘按钮以及重绘其它控件及窗体用到的方法:
1、该方法是将素材切割后再进行绘制,这样在按钮大小发生改变时也不会对素材的大小有影响:



===================不能超过1000字,请看二楼===================



2、该方法是将编译好的图片读取出来
[code=csharp]
/// <summary>
/// 得到要绘置的图片对像
/// </summary>
/// <param name="str">图像在程序集中的地址</param>
/// <returns></returns>
public static Bitmap GetResBitmap(string str)
{
     Stream sm;
     sm = FindStream(str);
     if (sm == null) return null;
     return new Bitmap(sm);
}

/// <summary>
/// 得到图程序集中的图片对像
/// </summary>
/// <param name="str">图像在程序集中的地址</param>
/// <returns></returns>
private static Stream FindStream(string str)
{
     Assembly assembly = Assembly.GetExecutingAssembly();
     string[] resNames = assembly.GetManifestResourceNames();
     foreach (string s in resNames)
     {
         if (s == str)
         {
             return assembly.GetManifestResourceStream(s);
         }
     }
     return null;
}[/code]
Ok,基础打好之后就可以开始正式的进行按钮绘制,代码比较长,里面包括定义变量,定义按钮属性,处理按钮构造函数。这里我分享关键部分重写OnPaint代码:


===========不能超过1000字,So请看三楼==========


其中关键部分已经出来,按钮也基本绘制完成。下一篇我将分享重绘主窗体,其中过程也没有详细讲解,主要原因是文采不好。如果有不了解的可以留言给我,我会及时回复。该皮肤的源码由于项目上正在使用暂时不进行公布,如果本文的反响和关注度都不错,我再决定是否提供下载。最后谢谢大家的关注。请期待下一篇的重绘主窗体。


本文来自 放肆雷特 | 胖子的技术博客


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
25
发表于 2016-1-4 10:13:11 | 只看该作者
感谢支持,我将陆续的把剩下的分享出来。
24
发表于 2015-9-19 15:01:31 | 只看该作者
我觉得很实用,不觉得落后,期待你的源码中,就算是2015年年底了,都值得期待
23
发表于 2015-6-1 11:13:53 | 只看该作者
强烈支持楼主ing……
22
发表于 2015-5-5 00:16:32 | 只看该作者
强烈支持楼主ing……他那么关闭按钮那些小的按钮是怎么做的了 ,我是新手
21
发表于 2014-8-25 12:56:52 | 只看该作者
强烈支持楼主ing……
20
发表于 2014-8-9 17:34:16 | 只看该作者
我现在在做一个仿360界面的聊天系统,楼主能把你的这个360案例发给我下么?我的邮箱15274020271@163.com非常感谢你帮了我的大忙,真的太感谢你啦!
19
发表于 2014-7-15 11:49:47 | 只看该作者
受教了,学习中……
18
发表于 2014-6-30 21:27:57 | 只看该作者
很好很强大!
17
发表于 2014-6-23 13:06:37 | 只看该作者
强烈支持楼主ing……
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 04:16

© 2014-2021

快速回复 返回顶部 返回列表