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

Microsoft Office 风格的 WPF 应用程序按钮

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.38/5 (9投票s)

2008 年 1 月 31 日

CPOL

4分钟阅读

viewsIcon

102413

downloadIcon

3109

一篇介绍 ApplicationButton 的文章,用于创建符合 Microsoft Office 风格应用程序按钮的圆形按钮

Demo Screenshot

引言

本文介绍了 ApplicationButton 类及其在 WPF 中创建圆角按钮的应用,特别适用于 Microsoft Office 应用程序的应用程序按钮。

背景

Microsoft Office 应用程序中的应用程序按钮用于打开应用程序范围的选项,如“保存”、“打开”和“退出”;它类似于 Microsoft Windows 的“开始”按钮。下面 Microsoft Office Word 的截图用红框标出了应用程序按钮。虽然源代码是作为用于重新创建 Microsoft Office 应用程序按钮功能的一个更大库的一部分创建的,但该控件可以轻松地在任何支持 WPF 的环境中进行使用。

Microsoft Office Word Screenshot

使用代码

添加控件本身很简单,只需要与标准的 WPF Button 进行类似的初始化和连接,但是除了预期的方法和属性之外,还有以下属性允许简单地重新设计按钮的样式;

  • BaseColor;默认背景颜色
  • BaseHoverColor;鼠标悬停在控件上时的背景颜色,平滑地在 BaseColor 和此颜色之间动画
  • BasePressedColor;鼠标按下按钮时的背景颜色(一旦释放鼠标按钮,就会恢复到 BaseHoverColor,或者如果鼠标指针离开控件,则从 BaseHoverColor 恢复到 BaseColor
  • HighlightColor;默认高亮颜色,即预览图中的较浅部分。请注意,当颜色应用于控件时,alpha 透明度会自动设置,因此设置此颜色时设置的任何 alpha 通道都将被忽略
  • HighlightHoverColor;鼠标悬停在控件上时的高亮颜色,平滑地在 HighlightColor 和此颜色之间动画
  • HighlightPressedColor;鼠标按下按钮时的高亮颜色(一旦释放鼠标按钮,就会恢复到 HighlightHoverColor,或者如果鼠标指针离开控件,则从 HighlightHoverColor 恢复到 HighlightColor
  • Image;用于设置控件的图标图像。在 Microsoft Office 的上下文中,这将设置为四个正方形的图案

注意,当设置相关属性时,按钮将自动更新其颜色。除了上述属性之外,还存在 autoGenerateHighlightColors() 函数,用于自动化高亮颜色的选择过程。按钮的默认样式会产生一个如上所示的样式的大中央按钮(即蓝色带有浅蓝色高亮,悬停时变为橙色,按下时变为深橙色)。

要设置按钮图像,请使用 Image 属性;该属性支持透明图像(便携式网络图形,PNG,推荐)。

按钮结构

按钮的结构相对简单,但如果没有高分辨率的大图复制品,则不易看清;非常感谢 Juan Pablo 在 RibbonRoundButton 1.0 上所做的工作,本作品在此基础上进行*宽松*的改编。下图说明了按钮是如何构成的。

Application Button Structure

  1. 用于背景颜色的实心 Ellipse,使用 SolidColorBrush 填充
  2. 一个带有向上倾斜的 RadialColorBrushEllipse,用于底部高亮部分
  3. 一个新月形 Path,带有 RadialColorBrush,其中外围值的透明度低于内围值

3 个叠加 2 个叠加 1。最后叠加一个 Image。按钮具有非均匀的边距,以适应下拉阴影位图效果。

关注点

奇怪的是,尽管 Microsoft 免费提供(甚至用于商业应用)*大量的 Office 用户界面选集,但 .NET 3.5 框架中目前还没有 Microsoft Office 的任何控件结构。未来的工作将把该库扩展到免费提供类似的 Microsoft Office 功能**;即将推出的一个 Window 替换将方便访问非客户区区域、标题菜单控件盒和文件菜单窗口。

* 在许可下,需要签署保密协议、遵守强制性设计指南和非竞争条款。
** 用于非商业用途,非盈利。

历史

版本 1.0.0.0 - 初始构建

其他许可说明

欢迎在您的工作中随意使用此代码,但请注意,我们使用的是修改版的 Code Project 开放许可证 (CPOL);基本上,它与标准许可证相同,只是未经事先授权,不得将此代码用于商业或非盈利性商业用途。请参阅包含的源文件和演示文件中的 license.txt 或 license.pdf。

© . All rights reserved.