博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Wince下实现ImageButton
阅读量:5235 次
发布时间:2019-06-14

本文共 2467 字,大约阅读时间需要 8 分钟。

我们在winform中给按钮设置个背景图片超级简单,是不?可是在wince下面就没那么简单了,下面我来介绍一种方式来实现ImageButton。

实现思路是重新写一个usercontrol就ok。具体的实现方式如下:

/IotButton是我们新控件的名字,具体的可以自己定义 public partial class IotButton : UserControl     {        public IotButton()        {            InitializeComponent();        }         Image backgroundImage;        bool pressed = false;         // Property for the background image to be drawn behind the button text.          public Image BackgroundImage        {            get            {                return this.backgroundImage;            }            set            {                this.backgroundImage = value;            }        }        // When the mouse button is pressed, set the "pressed" flag to true           // and invalidate the form to cause a repaint.  The .NET Compact Framework           // sets the mouse capture automatically.          protected override void OnMouseDown(MouseEventArgs e)        {            this.pressed = true;            this.Invalidate();            base.OnMouseDown(e);        }         // When the mouse is released, reset the "pressed" flag           // and invalidate to redraw the button in the unpressed state.          protected override void OnMouseUp(MouseEventArgs e)        {            this.pressed = false;            this.Invalidate();            base.OnMouseUp(e);        }         // Override the OnPaint method to draw the background image and the text.          protected override void OnPaint(PaintEventArgs e)        {            e.Graphics.FillRectangle(new SolidBrush(SystemColors.ActiveCaption), e.ClipRectangle);             if (this.backgroundImage != null)            {                ImageAttributes attr = new ImageAttributes();                attr.SetColorKey(Color.Magenta, Color.Magenta);                 if (this.pressed)                    e.Graphics.DrawImage(this.backgroundImage, this.ClientRectangle, 0, 0, this.backgroundImage.Width, this.backgroundImage.Height, GraphicsUnit.Pixel, attr);                else                    e.Graphics.DrawImage(this.backgroundImage, this.ClientRectangle, 0, 0, this.backgroundImage.Width, this.backgroundImage.Height, GraphicsUnit.Pixel, attr);             }             base.OnPaint(e);        }    }

 这里为什么要实现一个新的UserControl而不是基于Button呢?具体原因是这样的,因为Button中没有Paint事件,没有MouseUP MouseDown MouseMove等事件因此不能很好的实现,有图有证据哦?

看看我们自定义的按钮的事件和属性吧:

总结

上面的方式实现了在wince下自定义一个可以放image的控件,具体的不同我们可以对比上面的两图得到。希望对大家有帮助哦。

转载于:https://www.cnblogs.com/vsdot/p/3268362.html

你可能感兴趣的文章
对于python的初步认识和学习期望
查看>>
18. 4Sum
查看>>
OC面向对象
查看>>
web前端之CSS简介
查看>>
【剑指offer】面试题八:旋转数组的最小数字
查看>>
【剑指offer】面试题23:从上往下打印二叉树
查看>>
ZOJ Problem Set - 3708 Density of Power Network
查看>>
MYSQL关键字的使用
查看>>
[刘阳Java]_了解BeanFactory_第4讲
查看>>
修改Linux内核参数提高Nginx服务器并发性能
查看>>
字符串谜题
查看>>
善良有什么用? (张鑫旭)
查看>>
Font-Spider 一个神奇的网页中文字体工具,就是这么任性
查看>>
python编码encode和decode
查看>>
Django 练习班级管理系统四 -- 编辑班级
查看>>
java的自增和自减
查看>>
throw 和throws 的区别
查看>>
Java 访问控制符
查看>>
VS2010 + WinDDK 搭建驱动开发环境
查看>>
Unity3D粒子系统 合集
查看>>