我想创建一个矩形'平面三维'看我的控制模板之一。在最简单的版本中,这意味着在底部有一条比顶部更暗的线,并且可能在左右线之间也有一些变化。
一个更复杂的版本将允许我提供一个或更多的画笔,以便梯度可以应用。
WPF中的默认<Border>
元素允许您为每条边指定不同的厚度,但我找不到指定多个画笔的方法。
那么,如何才能尽可能简单地产生我想要的效果呢?
编辑有人建议我发布一个我想如何使用它的例子。就我个人而言,我很高兴有一个风格或用户控制。用户控件可以这样使用:
<FourSidedBorder LeftSideBrush="#00f" RightSideBrush="#0f0" ... />
或者更简单:
<FourSidedBorder BorderBrush="#00f,#0f0,#f00,#fff"
BorderThickness="1,2,3,4" ... />
这些只是想法。任何明智、简洁的解决方案都是受欢迎的。
7条答案
按热度按时间zzwlnbp81#
这是我设计的一个解决方案,它实现了我想要的大部分内容。它并不能给予对所有四个侧面的完全控制,但它确实能给予我想要的矩形平面3D视图。
它看起来是这样的:
[![][1]][1]
将此粘贴到Kaxaml中,自己看看:
希望能帮到别人。我仍然在寻找这个问题的创新解决方案,所以继续发帖,我会接受一个比这个更好的答案。[1]:https://i.stack.imgur.com/eMStF.png
gojuced72#
我已经做了类似的事情,只是把多个边界直接放在另一个之上。例如:
这提供了border提供的所有其他特性的额外优点--拐角半径等。
wb1gzix03#
老实说,最简单的方法可能是使用分层技术。例如,创建一个像这样的网格:
我想你明白了。这可能是最简单的方法。您可以将其设置为模板,并像这样使用它:
wztqucjr4#
您可以引用PresentationFramework.Classic程序集,然后使用
我使用this technique for looking at control templates来查看默认按钮的样式
rqenqsqc5#
需要一个经典的3D“插入”边界。根据@GregD的回答(谢谢!):
要使其成为“outset”,请恢复第一和第二元素对的顺序。
ltqd579y6#
我的两分钱酷的方法,我喜欢-使用阴影太(作为一种风格,所以你可以在任何地方使用它):
用法(注册样式时):
3D边界效果的位置是用BorderThickness完成的。你可以玩颜色,阴影深度,模糊半径,角落半径等。
ubof19bj7#