首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把DrawingContext转换成几何?

把DrawingContext转换成几何?
EN

Stack Overflow用户
提问于 2014-04-04 11:56:37
回答 1查看 808关注 0票数 3

有谁知道是否有可能保存或将DrawingContext转换为Geometry

例如,之后

代码语言:javascript
复制
using (DrawingContext dc = RenderOpen())
{
    dc.DrawLine(penSelected, Data.MidTop, Data.MidTop + vertical);
    dc.DrawLine(pen, Data.MidTop - horizontal, Data.MidTop + thickness);
    dc.DrawLine(pen, Data.MidTop + vertical - thickness, Data.MidTop + horizontal + vertical);
    dc.DrawText(new FormattedText(Data.Time2.ToString("0.0"), cultureinfo, FlowDirection.LeftToRight, typeface, 8, Brushes.Black),
        Data.MidTop + 3 * thickness);
    dc.DrawText(new FormattedText(Data.Time2.ToString("0.0"), cultureinfo, FlowDirection.LeftToRight, typeface, 8, Brushes.Black),
        Data.MidTop + vertical - horizontal - 3 * thickness);
}

以某种方式将绘制的对象保存在几何图形中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-04 14:04:03

当您用可视化内容填充DrawingVisual时,实际上是创建了一个绘图对象的层次化集合,这些对象可以通过DrawingVisual的Drawing属性(类型为DrawingGroup)访问。这些绘图对象中的每一个实际上属于下列类型之一:

  • GeometryDrawing
  • GlyphRunDrawing
  • ImageDrawing
  • VideoDrawing
  • DrawingGroup

其中两个提供了获得几何的性质或方法。显然,GeometryDrawing有一个Geometry属性,而GlyphRunDrawing有一个返回GlyphRun对象的GlyphRun属性,而后者又有一个BuildGeometry方法。这个方法返回了GlyphRun文本的轮廓的几何。

从DrawingGroup创建几何的静态帮助方法可能如下所示:

代码语言:javascript
复制
public static Geometry CreateGeometry(DrawingGroup drawingGroup)
{
    var geometry = new GeometryGroup();

    foreach (var drawing in drawingGroup.Children)
    {
        if (drawing is GeometryDrawing)
        {
            geometry.Children.Add(((GeometryDrawing)drawing).Geometry);
        }
        else if (drawing is GlyphRunDrawing)
        {
            geometry.Children.Add(((GlyphRunDrawing)drawing).GlyphRun.BuildGeometry());
        }
        else if (drawing is DrawingGroup)
        {
            geometry.Children.Add(CreateGeometry((DrawingGroup)drawing));
        }
    }

    geometry.Transform = drawingGroup.Transform;
    return geometry;
}

您只需将DrawingVisual的Drawing属性的值传递给此方法:

代码语言:javascript
复制
var geometry = CreateGeometry(visual.Drawing);
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22862162

复制
相关文章

相似问题

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