收藏 (0) +1 (0) +1 (0) +1
收藏成功查看收藏>>

正在阅读:构建一个弹出式图象按钮构建一个弹出式图象按钮

2004-02-14 09:34 出处:PConline 作者:webasp 责任编辑:huangpeidan
Control.Invalidate调用用于告知基类该控件需要被重画。基类依次调用覆盖的OnPaint方法,它通过PaintEventArgs来提供一个GDI+ 图象对象。你可以用该对象共享的DrawImage方法用一行代码绘制一个位图(bitmap),给DrawImage提供图象、位置和大小,选择将哪个图象绘制到鼠标位置。一个很方便的设计态专用的DisplayImageIndex属性会让用户自己选择将哪种图象显示出来。你可以将两种属性用在该方法的声明中:用于告诉Visual Studio属性窗口该在哪里列出该属性,用于在运行时将它隐藏起来。给DisplayImageIndex值添加一个枚举,使用户可以通过简单地点击这个值来查看到Down、Up和Hover。DisplayImageIndex使用户无需打开ImageList控件来确保他们选择了正确的用于Down、Up和Hover的ImageIndex值。   你可以用鼠标位置来选取需要绘制的边框颜色。当焦点集中在控件上时,代码将边框厚度设置为两个象素点,只用于UP状态。建立一个新的Pen对象(不要用缺省的系统的画笔)画出大于一个象素点的一行。不要忘记在完成时调用Dispose方法。你应该根据边框的宽度调整边框矩形的大小,因为控件不能随意在窗体以外进行绘制。   我从来不喜欢用按钮图象的算法操作来显示up、over和down状态,每个ImageButton均用了三个单独的位图。在一个form中使用许多ImageButtons会导致产生大量的图象,因此我给ImageButton提供了一个ImageList属性,而不是三个图象属性。将该属性作为Forms.ImageList来声明,则NET和VS.NET IDE会为你处理大量的工作。你不需要通过编写代码来检测ImageList,属性窗口会将它显示出来。使用ImageList的另一个好处是它排除了用代码处理用户提供图象大小的可能性。当用户以不同的大小加载它时,ImageList代表的是一个单一大小和比例的图象。   图象的大小决定了ImageButton的大小;该控件没有AutoSize属性。假如用户试图通过拖动控件的边框或通过属性窗口来改变它的大小,则ImageButton会立即重新设置为图象的大小。你可以通过覆盖OnSizeChanged过程来得到该行为,你还可以用一个只读版本将Control类的非覆盖Size属性隐藏起来。这给IDE带来了一个问题,因为他要序列化Size属性,试着将它设置到用户窗体的"Designer generated code"区域。添加属性以避免用户在设计时读取它的属性序列化时,它提供一个更友好的工具给用户。
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
手机访问回到顶部