WPF 矩形与边框:哪个性能更好?

Posted

技术标签:

【中文标题】WPF 矩形与边框:哪个性能更好?【英文标题】:WPF Rectangle vs Border: Which is better for performance? 【发布时间】:2013-02-06 21:06:47 【问题描述】:

有时Border 控件或Rectangle 控件将满足我的需求。例如,当我正在实现 ControlTemplate 并且我已经在应用分层技术(即在 Grid 中堆叠控件)时,我不需要将不同的 RadiusX 或 RadiusY 应用于角落。

然而,在设计这样的 ControlTemplates 时,有时我最终会使用 几个 这样的边框或矩形层。因此,我意识到我可能应该认识到哪个控件对应用程序的性能影响最小。我看到它们的继承层次结构在 FrameworkElement 之后出现了分歧。而且我还注意到 Border 是一个装饰器控件(我使用过装饰器,但我不确定它们相对于其他控件的性能如何)。有人能解释一下吗

1) 我们如何能够根据特定的继承层次对控件的性能影响得出一些一般性结论?

2) 装饰器(例如 Border)相对于其他控件的表现如何?

3) 特别是关于 Border 和 Rectangle,哪个表现更好?

【问题讨论】:

说实话,我从来没有遇到过边框或矩形的性能问题。 我不认为使用边框或矩形会影响您的应用程序性能,您应该担心效果(如阴影)和动画,它们会影响您的应用程序性能的方式是相当可观的。在那些不会显着影响性能的情况下,我更喜欢提高代码的可读性,在需要边框时使用边框,在需要矩形时使用矩形。 对于 WPF 中的任何图形性能问题都必须这样做:***.com/a/33532790/347484 【参考方案1】:

根据我的经验,WPF 边框的重量要轻一些,但更重要的是 - 它们代表了一种不同的需求,尽管它们在您的屏幕上通常呈现相同的效果。如果我正在编写包含矩形作为其一部分的东西,那么矩形通常是合适的。如果我想在屏幕上强调某些东西,或者表明一个对象有一些不同的状态——那么我将使用边框。我经常将该边框的颜色、粗细或可见性绑定到模型的 state 属性(或适用于您的情况的任何内容),但本质区别在于边框不是对象的一部分。这是一种使该对象突出或可见的方法。

或者,如果它是一些已经组成的东西,比如一个文本框,我会在它周围添加一些颜色 - 这通常是一个边框。

通过牢记这一区别,它可以帮助您的 XAML 树更适合您,并为您提供以后更易于维护的代码。

【讨论】:

以上是关于WPF 矩形与边框:哪个性能更好?的主要内容,如果未能解决你的问题,请参考以下文章

WPF 边框对象边框 CornerRadius 与边框背景 CornerRadius 不同

列的WPF DataGrid边框已移位

WPF 矩形框8个控制点伸缩及拖拽

c#编程wpf按钮边框带有白边!

android边框能只定义左边框吗

QQ的一些图标是隐藏了按钮的边框 但是鼠标放在上面又出现了 想问一下如何用WPF实现的