65.9K
CodeProject 正在变化。 阅读更多。
Home

自定义箭头按钮

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.57/5 (20投票s)

2005年9月13日

CPOL

2分钟阅读

viewsIcon

175003

downloadIcon

5843

一个看起来像箭头的按钮。

Testform with several ArrowButtons

引言

在之前的 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"。

方法 / 属性

该控件提供了六个与设计器相关的属性

Designer properties

  • NormalStartColor, NormalEndColor -> LinearGradientBrush 在正常状态下的起始颜色和结束颜色。
  • HoverStartColor, HoverEndColor -> 当鼠标光标悬停在箭头上方时,LinearGradientBrush 的起始颜色和结束颜色。
  • Rotation -> 箭头指向的方向,以度为单位。从 12 点钟的 0° 开始,顺时针旋转到 360°。
  • ArrowEnabled -> 启用或禁用按钮。像其他控件中的启用/禁用一样。

事件

类中有一个公共事件 OnClickEvent。当鼠标按钮悬停在箭头上方并按下时,将触发该事件。

助手类

BitArray 是一个简单的辅助类,我用它来保存不同的按钮状态(并玩一下索引器)。在代码中可以看到如何使用它。

ArrowButtonDesigner 继承自 System.Windows.Forms.Design.ControlDesigner。一个用于扩展控件设计模式行为的基础设计器类。我只用它来隐藏属性。

关于演示的建议

除了按钮 -X+X 之外,其他按钮没有功能。如果您点击 x 值小于 0 或使其大于 50,则特殊 ArrowButtonHoverColor 将变为红色。

已知限制

  • 如果您将箭头设置得太大,有时防止裁剪的计算将无法正确工作。
  • 没有测试来检查按钮文本的长度和大小是否正确。
© . All rights reserved.