2010-10-18 74 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(); 
       }