如何在WPF中绘制凹角矩形?

3
我该如何在WPF中绘制一个凹角矩形?
3个回答

3
您可以通过Expression Blend下的路径操作(菜单-对象->路径操作)创建此内容。我已通过从矩形中减去四个椭圆来创建路径。
对于凹矩形,Path.Data如下所示,@Kent Fredric在先前的答案中提供的逻辑将有助于实现。

alt text

M17.200002,0L120.4,0 120.4,2.3066998E-06C120.4,6.7378696,128.10079,12.200001,137.60001,12.200001L137.60001,85.400003C128.10077,85.400003,120.4,90.862138,120.4,97.6L17.200002,97.6C17.200002,90.862151,9.4993697,85.400003,0,85.400003L0,12.199999C9.4993663,12.200015,17.200002,6.7378725,17.200002,0z

请点击此处查看博客文章http://jobijoy.blogspot.com/2008/11/concave-cornered-rectangle-blend-tip.html

另一种方法是创建一个WPF自定义形状,如下所示:

public class ConcaveRectangle:System.Windows.Shapes.Shape

谢谢,我在另一个论坛上问了同样的问题,并通过使用WPF中的Path函数得到了相同的解决方案。 - Bob Kerlinger

2
do you mean a rectangle with concave corners?, ie: 
     ____________________
    |                    |
  __|                    |__
 |                          |
 |                          |
 |                          |
 |__                      __|
    |                    |
    |____________________|

给定一个长宽分别为 w x h,拥有圆角半径 r 的矩形。 该矩形有4个角:

A :  0,0
B :  w,0
C :  w,h
D :  0,h

有一个隐含的最小尺寸

w = 2r
h = 2r

有4个圆心,A,B,C,D

因此,存在一个边缘点的网格:

(0,0)--(0+r,0)---(w-r,0)---(w,0)
|                              |
(0,0+r)                  (w,0+r)
|                              |
|                              |
(0,h-r)                  (w,h-r)
|                              |
(0,h)--(0+r,h)---(w-r,h)---(w,h)

然后只需要计算从一个点到另一个点的弧度。

0
我应该指出,如果它是凹的,四边不是完全相同和直的;因此它不是一个矩形。但我离题了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接