学做button的皮肤
来源:互联网 发布:淘宝店分类怎么删除 编辑:程序博客网 时间:2024/05/17 04:39
拖一个label 控件到用户控件上面并设置label的属性
AutoSize = false;
Dock:fill
TextAlign:MiddleCenter
BackColor:TransParent
Font:宋体,9pt
先贴代码
namespace button_add{ [DefaultEvent("Click")] //默认的点击事件 public partial class button: UserControl { public button() { this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer,true); downImage = Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream(@"button_add.button.FixAllButton_down.png")); moveImage = Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream(@"button_add.button.FixAllButton_highlight.png")); normalIamge = Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream(@"button_add.button.FixAllButton_normal.png")); MakeTransParens(normalIamge); MakeTransParens(downImage); MakeTransParens(moveImage); InitializeComponent(); this.BackgroundImage = normalIamge; }#region Image normalIamge = null; Image moveImage = null; Image downImage = null;#endregion [Category("QLFSkinDll")]//将属性分类 public Image NormalImage { get { return normalIamge; } set { normalIamge = value; } } [Category("QLFSkinDll")]//将属性分类 public Image DownImage { get { return downImage; } set { downImage = value; } } [Category("QLFSkinDll")]//将属性分类 public Image MoveImage { get { return moveImage; } set { moveImage = value; } } public string Caption { get { return this.label1.Text; } set { this.label1.Text = value; } } #region 辅助函数 private void MakeTransParens( Image image) { Bitmap bitmap = image as Bitmap; bitmap.MakeTransparent(Color.FromArgb(255,0,255)); } #endregion #region 事件 private void label1_MouseLeave(object sender, EventArgs e) { this.BackgroundImage = normalIamge; } private void label1_MouseEnter(object sender, EventArgs e) { this.BackgroundImage = moveImage; } private void label1_MouseDown(object sender, MouseEventArgs e) { this.BackgroundImage = downImage; } private void label1_Click(object sender, EventArgs e) { this.OnClick(e); } #endregion }}
1: [DefaultEvent("Click")] //默认的是Click事件,如果携程【DefaultEvent("MouseEnter") 就是MouseEnter事件】
三个按钮分别对应normal,mouseMove,MouseDown
2:具体要解释的即是【Category("QLFSkinDll")】,这句话的意思是将这些属性分类.
3: public button() 第一句话的意思开始了窗体的双缓冲。 接下来的三句是给三个状态的图像赋值,在项目中的图片点击之后将“生成操作”改为嵌入的资源。
Assembly.GetExecutingAssembly.GetManifestResourceStream(@QLFUI.Res.button.btnnomal.bmp) 黑体的规则为: 命名空间+文件夹名+ 资源名称。
容易出错的地方:
当时也是找到了类似的一片文章,完全照搬之后发现一个问题是拖拽自定义的控件之后发现点击按钮没有反应。原因是事件没有关联。其中的 label1_MouseLeave label1_MouseEnter label1_MouseDown 这三个函数应该是要和label 控件关联起来。
0 0
- 学做button的皮肤
- 跟我学做 c#皮肤美化
- 跟我学做c#皮肤美化
- 近日做的皮肤界面
- 睡觉前对皮肤做的几件事
- 自己做的一个button
- 经常熬夜的MM必学的皮肤保养技巧
- 跟我学做c#皮肤美化(七)----窗体换肤
- 教你怎么做可以换皮肤的软件
- 几个漂亮的CSS做的Button
- 做一个有图片的button(webcontrols)
- 学做“聪明的饿狼”
- 【翻译,转载】可编程皮肤的按钮Programmatic button skins in Flex 3
- 下面以Button组件为例,开始FLEX皮肤制作的入门。
- flex 4.6 按钮(button)和按钮皮肤(buttonSkin)类的实现
- 从零开始学android<Button组件的使用.五.>
- 我和我的小伙伴们一起学Unity3D(三)GUISkin 界面皮肤
- 用CSS做的几个漂亮的Button
- hexdump,od,xxd
- QDockWidget嵌套布局详解-实现Visual Studio布局
- log4net
- 超声波指纹识别技术
- 算法学习笔记之matlab安装教程
- 学做button的皮肤
- 文章标题
- 四旋翼飞行DIY入门
- 【Qt教程】Qt常用部件介绍
- XSLT2.0 xsl:for-each-group用法详解.
- kafka深度解析
- gh
- kubernetes(1):Centos7 安装 kubernetes 1.4.0 版本
- C++的引用类型的变量到底占不占用内存空间?