2011-06-11 60 views
4

我有一個由外邊框然後內邊框定義的形狀。如果沒有內部邊界,形狀是堅實的。如果存在內邊框,我希望僅在兩個邊框之間定義多邊形/路徑;我不想畫外面,然後用背景色繪製內部。C#繪圖:什麼是繪製中間有一個洞的多邊形的最佳方式

舉例來說,如果我有由外部邊框下面的座標所構成的方形:

{0,0}, {20, 0}, {20,20}, {0, 20} 

然後那個廣場是20×20,其底部的起源左右上角。這形狀,然後有一個三角形的剪裁出中心:

{10,10}, {15,10}, {15,15} 

我如何可以創建一個包含使用WPF兩種或GDI +這種形狀的路徑?

回答

3

在GDI +中,您可以使用FillPath()DrawPath()FillModeAlternate

有一個例子非常接近你要求的here

6

您可以繪製形狀XAML:(關鍵是使用CombinedGeometryGeometryCombineMode="Exclude"

<Path Fill="Black"> 
    <Path.Data> 
     <CombinedGeometry GeometryCombineMode="Exclude"> 
      <CombinedGeometry.Geometry1> 
       <RectangleGeometry Rect="0,0,20,20"/> 
      </CombinedGeometry.Geometry1> 
      <CombinedGeometry.Geometry2> 
       <PathGeometry> 
        <PathFigure StartPoint="10,10"> 
         <LineSegment Point="15,10"/> 
         <LineSegment Point="15,15"/> 
        </PathFigure> 
       </PathGeometry> 
      </CombinedGeometry.Geometry2> 
     </CombinedGeometry> 
    </Path.Data> 
</Path> 
+3

+1值得指出的是,這裏的關鍵是'GeometryCombineMode =「Exclude」' – 2011-06-11 20:03:58

+0

@Kent是的,確實如此。我編輯過它。 – 2011-06-11 20:33:34

0

只是借鑑使用的背景顏色的主要輪廓的頂部的孔。它看起來好像是真實的洞 編輯 如果您使用的API不支持漏洞,請使用此方法。這就是爲什麼我假設你問的是

+0

很少有APIs不支持漏洞,儘管我以前在使用libharu生成PDF文件時遇到了問題(仍然有意義來檢查它是否已更改或開發補丁--PDF絕對支持複合路徑)。當然,在背景顏色中繪製一個洞只有在你應該看到整個*的背景顏色時纔有效。即使如此,也可能存在諸如用於邊緣的風格等技術問題。不過,對於簡單情況下的簡單解決方案+1。 – Steve314 2011-06-11 21:16:49

+0

如果多邊形也應該具有某種透明度,則您的方法將不起作用。 – Mikhail 2011-09-07 19:45:13

+0

通常如果你在一個多邊形中有一個洞,你想看到下面的圖層或洞內的數據。如果您用背景顏色繪製洞,則會擦除已在此區域繪製的所有內容。 – nivs1978 2016-12-22 13:35:19

相關問題