自定义箭头按钮






4.57/5 (20投票s)
一个看起来像箭头的按钮。
引言
在之前的 VC++ (MFC) 项目中,我设计了一个 GUI,用于在机器中定位辅助机器人。为此,我将矩形按钮形状更改为箭头形状。我将这个想法带到 C# (.NET Framework) 中进行编程。为此,我阅读了 CodeProject 上关于形状控件的最有用文章。因此,有了这些信息以及加深我对 C# (GDI+, .NET Framework) 知识的目标,我开始了该项目。以下是结果。
使用代码
该项目被设计为一个自定义控件。在我的文章 "PictureBox with zooming and scrolling" 中,我描述了如何安装和使用这样的控件,或者查看 CodeProject 中关于该主题的不同文章,例如 Alexandr Khilov 的 "Writing your Custom Control: step by step"。
方法 / 属性
该控件提供了六个与设计器相关的属性
NormalStartColor, NormalEndColor
->LinearGradientBrush
在正常状态下的起始颜色和结束颜色。HoverStartColor, HoverEndColor
-> 当鼠标光标悬停在箭头上方时,LinearGradientBrush
的起始颜色和结束颜色。Rotation
-> 箭头指向的方向,以度为单位。从 12 点钟的 0° 开始,顺时针旋转到 360°。ArrowEnabled
-> 启用或禁用按钮。像其他控件中的启用/禁用一样。
事件
类中有一个公共事件 OnClickEvent
。当鼠标按钮悬停在箭头上方并按下时,将触发该事件。
助手类
类 BitArray
是一个简单的辅助类,我用它来保存不同的按钮状态(并玩一下索引器)。在代码中可以看到如何使用它。
ArrowButtonDesigner
继承自 System.Windows.Forms.Design.ControlDesigner
。一个用于扩展控件设计模式行为的基础设计器类。我只用它来隐藏属性。
关于演示的建议
除了按钮 -X 和 +X 之外,其他按钮没有功能。如果您点击 x 值小于 0 或使其大于 50,则特殊 ArrowButton
的 HoverColor
将变为红色。
已知限制
- 如果您将箭头设置得太大,有时防止裁剪的计算将无法正确工作。
- 没有测试来检查按钮文本的长度和大小是否正确。