首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF PathGeometry填充

WPF PathGeometry填充
EN

Stack Overflow用户
提问于 2014-07-01 21:41:49
回答 1查看 2.3K关注 0票数 1

我遇到了WPF和PathGeometry的问题。我有下面的Path对象,它是直线和圆弧的组合。

代码语言:javascript
复制
<Path Data="M100,180L220,180 M220,180L220,152 M220,152L217,150
M217,150L182,150 M180,147L180,132 M182,130L217,130 M217,130L220,127
M220,127L220,80 M220,80L100,80 M100,80L100,180 M182,150L180,147
M180,132L182,130">

下面是一个应该绘制整个形状的简单代码片段。

代码语言:javascript
复制
private void DrawIt()
{
    Canvas canv = new Canvas();
    this.Content = canv;
    canv.Margin = new Thickness(0, 0, 0, 0);
    canv.Background = new SolidColorBrush(Colors.White);

    Path testPath = GetPath("blue");
    testPath.Data = Geometry.Parse("M100,180L220,180 M220,180L220,152 M220,152L217,150 M217,150L182,150 M180,147L180,132 M182,130L217,130 M217,130L220,127 M220,127L220,80 M220,80L100,80 M100,80L100,180 M182,150L180,147 M180,132L182,130 ");
    var area = testPath.Data.GetArea();

    canv.Children.Add(testPath);
    this.Content = canv;
}

private Path GetPath(string aColor)
{
    Path imagePath = new Path();
    SolidColorBrush colorBrush = (SolidColorBrush)new BrushConverter().ConvertFromString(aColor);
    imagePath.Stroke = colorBrush;
    imagePath.StrokeThickness = 2;
    imagePath.Fill = colorBrush;

    return imagePath;
}

上面的代码产生了下图:

我的问题是,我试图获得这个图像的面积,但Path.Data.GetArea()只返回0.0。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2014-07-01 22:01:31

您正在描述多个图形,所有这些图形都只是一条直线,因为您一直在发出Move命令。如果您的路径数据是这样的:

代码语言:javascript
复制
M100,180L220,180 220,152 217,150 182,150 180,147 180,132 182,130 217,130 220,127
         220,80 100,80 Z

相反,它描述了一个单独的图形,它应该绘制与您所显示的相同的形状,但也应该是可填充的。

请参阅Path Markup Syntax

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24511772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档