Visual Basic 8 (2005)Visual Studio 2005设计/图形.NET 2.0C# 2.0中级开发Visual StudioWindows.NETVisual BasicC#
改进和重写的 RibbonMenuButton






4.93/5 (154投票s)
一个具有多种功能的新版本

引言
首先,感谢大家。我很感激知道人们重视这项努力。我记得就像昨天一样,我十六岁左右,看到了很多类型的软件、应用程序和游戏。对我来说,当时我不可能接触和开发软件。我从那时起学到了很多,而且我意识到现在接触这类软件要容易一百万倍。此外,如果我能帮助任何人创建赏心悦目的应用程序,我决定他们可以自由使用我的代码。
背景
我一直在思考如何制作一个完全可定制的按钮,以及改变 RGB 组件有多么困难。我决定制作 RibbonColor,它有很多操作颜色的选项。如果你玩演示应用程序,当你移动色调、饱和度和亮度滑块时,你会很快明白。我不得不承认,我的新 RibbonControl 库大约有 70% 已经完成。然而,由于人们渴望获得改进的代码,并告诉我我几乎没有解释我的代码,我决定像给初学者一样来写。所以,我们开始吧。
如何使用代码
首先,创建一个新的 Windows 应用程序。从解决方案资源管理器中,选择“添加现有项”选项。然后选择RibbonMenuButton.cs并重新生成项目。现在,如果你去form1
设计器,在工具箱中你会看到RibbonMenuButton
。将它拖到窗体上。你会看到一个没有意义的控件,但让我们来调整属性。首先,设置RibbonMenuButton
的属性。

设置完属性后,添加一张图片,设置你想要的文本,如果你的系统中有,就将字体设置为 Segoe UI。你会看到类似这样的效果。

如果你已经编译了项目并且得到了这样的结果,下一步就是更改控件的属性。让我们看看每个属性代表什么。我建议你查看演示项目中的按钮属性设置。
Arrow
:绘制一个箭头,可以设置为ToRight
(向右)或ToDown
(向下);这只是绘制,因为双重功能在另一个属性中。Colors
:我认为这不需要解释;我建议你使用PlayGround
应用程序来选择你的颜色。FadingSpeed
:这有助于颜色之间的淡入淡出;选择0
以避免淡入淡出。GroupPos
:这用于在左、右、中心(无)、顶部或底部创建圆角。ImageLocation
:用于将图像放在左侧、右侧、顶部或底部。ImageOffset
:用于从边距偏移。MaxImageSize
:用于放大按钮,并限制图像缩放。Radius
:角的半径。ShowBase
:如果你想显示BaseColor
和BaseStroke
颜色,其中Transparent
是一种颜色,并且可以实现淡入淡出。如果设置为No
,则不进行淡入淡出。SplitButton
:创建一个双功能按钮;箭头部分打开关联的ContextMenu
,另一部分是主事件。SplitDistance
:箭头部分按钮的大小。Title
:如果设置的值不等于""
,它会自动将标题加粗并放在文本下方。Text
:如果你有标题并且想要两行文本,可以在文本中添加\n
来实现两行。KeepPress, IsPressed
:如果KeepPress
在某些按钮上处于活动状态,当其中一个按钮被按下时,它会保持按下状态,而容器中的其他按钮会失去IsPress
状态。
我尝试了崩溃应用程序,但它总是有效。所以,我认为代码实际上是无错误的。
关注点
如果你想了解更多关于这些控件的信息,我建议你看看:
this.Region
:这是避免透明度问题的好方法。LinearGradient
具有多种颜色,使渐变变得容易。MeasureString
:这是定位文本的好方法,因为你必须去掉base.OnPaint
-> 你必须做所有事情,包括写文本。TransformColors
方法,包括 alpha 透明度。DrawArc
方法:正如你所看到的,通过半径可以制作圆角。OnMouseUp
:在这里你可以看到当SplitButton
被激活和IsPressed
被激活时会发生什么。RibbonColor
:我从维基百科和 Gimp 中获取了公式。System.Drawing.Color.GetHue
、Sat
和Brightness
效果不佳。
历史
- 2007年6月5日。1.6 - 解决了
Repaint
(重绘)、ChangingSize
(改变大小)和过高的 CPU 消耗问题。添加了KeepPress
(保持按下)和IsPress
(按下状态)功能。 - 2007年5月16日。1.5 - 因为在我学会如何使用色相、饱和度和亮度时,我不得不重新编写所有内容。