2010-10-18 108 views
1

我有一个函数接收一个图形,我需要将其部分地显示为DrawingImage(即:它的位置和大小将被缩小/更改以适合目标区域)。WPF:如何裁剪/剪裁绘图或DrawingImage?

如何剪切/剪切原始图形的区域? 或者,在转换到DrawingImage后(如何裁剪DrawingImage),做这件事更容易?

回答

4

的解决方案是封装原始图纸在DrawingGroup,然后应用裁剪几何...

public DrawingGroup MyClippingFunc(Drawing OriginalDrawing, Rect ClippingArea) 
{ 
    var Group = new DrawingGroup(); 
    Group.Children.Add(OriginalDrawing); 
    Group.ClipGeometry = new RectangleGeometry(ClippingArea); 

    return Group; 
} 
0

我对你在问什么有点困惑,但也许我对这个类似问题的答案将有所帮助?

How can I use a PathGeometry as a mask for a BitmapSource (or any image data)?

+0

对不起,我的意思是DrawingImage而不是图像。 – 2010-10-19 04:18:34

+0

没错,但我仍然不明白你需要如何使用它。 DrawingImage可以设置为图像控件的来源。在这种情况下,我认为设置image.clip属性的链接解决方案会得到你想要的? – 2010-10-19 17:35:03

+0

我需要在库函数中执行此操作,其中还不知道结果将在何处/如何使用(例如,您提出的图像控件)。 – 2010-10-20 23:47:58

3

这是另一种方式来做到这一点,使用InkCanvas StrokeCollection中的类一个例子。

using (DrawingContext drawingContext = drawingGroup.Open()) 
       { 
        drawingContext.PushClip(new RectangleGeometry(yourRectangleObject)); 
        Strokes.Draw(drawingContext); 
        drawingContext.Pop(); 
       }