ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:17.56KB ,
资源ID:5397242      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5397242.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(跟我学做c#皮肤美化二.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

跟我学做c#皮肤美化二.docx

1、跟我学做c#皮肤美化二跟我学做c#皮肤美化(二) 跟我学做c#皮肤美化(二) -Button控件的制作概述与导航这一篇的QLFUI按钮.zip 先来看看我们最终要做的效果图(分别对应普通、悬停、按下时的状态): 下面就开始正式做。首先让我们新建一个控件库项目,命名为QLFUI。如图: 然后将默认的UserControl1重命名为 Button。接下来,我们就要在这上面来做文章了。先来稍稍设置一下,让这个用户控件看起来更像一个按钮吧!Button的Size: 78,30 BackgroundImageLayout:Stretch然后拖一个label控件到这个用户控件上,并设置label1的属性为

2、AutoSize:false , Dock:fill, TextAlign:MiddleCenter, BackColor: Transparent, Font: 宋体, 9pt这几个属性。好了,是不是开始像一个按钮了呢? 哦,差点忘了最后还要将整个控件(BUTTON)的背景色设置为Trasparent透明色。因为如果不设置成透明色那么透明的图片下面就会显示出button的背景色(默认灰色),不好看。好了,现在样子的已经大概有了,接下来就是编程了。先贴代码,然后我一个一个解释: 代码 DefaultEvent(Click) public partialclass Button: UserCon

3、trol #region 变量 /三种不同状态下的图片 Image _normalImage =null; Image _moveImage =null; Image _downImage =null; #endregion #region 属性 Category(QLFSkinDll) public ImageNormalImage get return_normalImage; set _normalImage = value; Category(QLFSkinDll) public ImageDownImage get return _downImage; set _downImage

4、= value; Category(QLFSkinDll) public ImageMoveImage get return _moveImage; set _moveImage = value; Category(QLFSkinDll) public stringCaption get returnthis.label1.Text; /控件运行时会自动运行get方法得到值set this.label1.Text= value; #endregion #region 构造函数 public Button() this.SetStyle(ControlStyles.AllPaintingInWm

5、Paint | ControlStyles.OptimizedDoubleBuffer, true); /默认的是自带的图片样式,如果使用该按钮则必须手工指定当前按钮你想要的背景图片 _normalImage = Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream(QLFUI.Res.button.btnnomal.bmp); _moveImage = Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStrea

6、m(QLFUI.Res.button.btnfore.bmp); _downImage = Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream(QLFUI.Res.button.btndown.bmp); MakeTransparent(_normalImage); MakeTransparent(_moveImage); MakeTransparent(_downImage); InitializeComponent(); this.BackgroundImage= _normalImage;

7、#endregion #region 辅助函数 private voidMakeTransparent(Image image) Bitmapbitmap = image as Bitmap; bitmap.MakeTransparent(Color.FromArgb(255, 0, 255); #endregion #region 事件 private voidlabel1_MouseEnter(object sender, EventArgs e) this.BackgroundImage= _moveImage; private voidlabel1_MouseDown(object s

8、ender, MouseEventArgs e) this.BackgroundImage= _downImage; private voidlabel1_MouseLeave(object sender, EventArgs e) this.BackgroundImage= _normalImage; private voidlabel1_MouseUp(object sender, MouseEventArgs e) this.BackgroundImage= _normalImage; private voidlabel1_Click(object sender, EventArgs e

9、) this.OnClick(e); #endregion 先看第一句: DefaultEvent(Click),这句话是什么意思呢?我们知道平常我们拖一个按钮后,在设计模式下双击这个按钮就会自动产生这个按钮的Click事件。这个默认的Click事件从哪里来的呢,毫无疑问就是DefaultEvent(Click)这一句来设置的啦!这里默认的是Click事件,如果写成DefaultEvent(MouseEnter)就是MouseEnter事件啦!接下来的四句分别定义了按钮三种不同状态下的bitmap。下面的四个属性分别是三种不同状态下Image的属性和按钮的文字属性Caption,大家一看应该就

10、明白。具体要解释的就是Category(QLFSkinDll)。这句话的意思是将这些属性分类,看个图片大家就都明白了:以后在项目中设置属性时,我们定义的属性就自动分类在QLFSkinDll下面了。 接下来是构造函数:public Button()中的内容。 第一句是开始了窗体的双缓冲。双缓冲的意思就是现在内容中将图像画好了然后再显示到界面上去。在c#中图像一多最怕的就是图像闪烁的问题,开启了双缓冲虽说不能完全避免图像闪烁,但起码也能有一定的效果,我们就先开着吧 !接下来的三句就是给三个状态的图像赋值了,这里我是把图像嵌入进来了,并没有放置在外部。要应用嵌入的资源分两步走:第一步在项目中点击图片

11、的属性,然后将“生成操作”改为嵌入的资源。 第二步应用就是我们用到的代码啦:Assembly.GetExecutingAssembly().GetManifestResourceStream(QLFUI.Res.button.btnnomal.bmp),这句话前面的照写,后面的路径规则是“命名空间+文件夹名+你的文件名+文件名后缀”,当然如果你的文件直接放在项目下就没有文件夹名了。聪明的大家应该明白吧?呵呵!其中我们要用到的文件大家可以从我给的项目例子中复制。接下来的MakeTransparent(_normalImage);MakeTransparent(_moveImage);MakeTr

12、ansparent(_downImage);三句先不看,可以注释掉,下面会讲解它的作用的。第八句InitializeComponent()是系统自带的初始化控件一些代码,我们不用去管它。最后一句this.BackgroundImage =_normalImage;就是设置按钮的其实的图片的样子啦!好啦,写了这么久,咱们还是先来看看能运行出个什么样子出来吧!看看目前的状态下,它离我们的目标还差多远!见图: 从图中我们可以看到明显的一个问题,就是按钮的边缘有粉红色。而且如果你也正好做到这里也会发现鼠标经过按钮时,按钮没有任何反应(废话,我们还什么都没做呢)。好了,接下来就有目标了,解决这两个问题我

13、们这个按钮美化的就差不多了!先来解决第一个问题,去掉粉红色。我们需要用到Bitmap的一个函数MakeTransparent(Color),这个函数的作用是使指定的颜色对 Bitmap 透明。也就是说我们只要将这个函数的Color设置为我们需要去掉的粉红色不就行了?!继续看代码,我们先写一个函数private void MakeTransparent(Imageimage),这个函数的作用就是将传进来的图片的指定的颜色进行透明处理。函数里就两句话,第一句话先将Image转为Bitmap。第二句话就是进行透明处理,这里的Color.FromArgb(255, 0, 255)就是我们要去的粉红色啦

14、。那什么时候进行去色呢?毫无疑问,当然是在给三种状态赋值后紧接着就去色啦!所以我们在构造函数中的5,6,7句加上透明处理。(倒过来讲这个作用,大家习惯不习惯呢?)好了,现在我们再来运行一下:看图: 呵呵,正如预料的那样,粉红色没有了(图中的灰色其实是透明的,只要在另外一个项目中引用一下就知道了),第一个问题解决!再来看第二个问题,要实现按钮的变色肯定是跟鼠标的事件相关啦,比如说鼠标一进入按钮的范围之内我们就让按钮的背景改变,按下和离开按钮的时候也响应的改变背景。所以我们用到这四个事件(注意,事件都是label1的事件,因为我们将label覆盖在按钮上,所以我们点击的其实是label1):Mou

15、seEnter,MouseDown, MouseLeave, MouseUp。具体的事件里面执行的代码也很简单,就是更换按钮的背景图片。好了,让我们再运行一下看看效果: OK!两个问题都解决了,我们的按钮运行的好像也很正常!鼠标进入,移出,按下的时候也会变换背景!但是,如果你另外建一个项目,并双击产生点击事件并编写相应代码时就会发现点击事件没作用了。多么郁闷的一件事情啊,点击事件都没作用了,我们还要这个按钮干嘛啊!别急,让我们来解决它。首先要明白的就是我们在其他项目中引用的这个的button控件的点击事件是整个用户控件的点击事件(还记得我们在整个button类的上方设置了默认的点击事件吗?),而当我们去点击按钮时我们实际点击的只是label1。问题很明了了,我们点击的是label1,设置的却是整个用户控件的事件,当然触发不了事件了。既然问题已经搞明白了,下面就去解决它。继续看代码:既然我们点击的是label1那么我们就在label1的点击事件中做文章,如代码所示,我们在label1的点击事件中触发了整个类(this)的onclick事件,然后这个onclick会去找相应的类的click事件,就是我们在其他项目中直接双击的那个事件啦!OK,至此这个按钮空间的美化就做好了看看效果吧!

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2