2011-04-29 100 views
0

我在我的WinForms程序中感覺到笛卡兒圖形中兩條曲線之間的空間時遇到一些困難。以笛卡爾圖形填充兩條曲線之間的空間

Basicly我有兩條曲線,我畫他們在使用這種方法的位圖:

public Bitmap DrawEnvelope(PointF[] u, PointF[] d) 
    { 
     g = Graphics.FromImage(box); 
     g.SmoothingMode = SmoothingMode.AntiAlias; 
     g.PixelOffsetMode = PixelOffsetMode.HighQuality; 

     Pen pengraph = new Pen(Color.FromArgb(50, 0 ,0 ,200), 1F); 
     pengraph.Alignment = PenAlignment.Center; 

     g.DrawCurve(pengraph, u, 0); //uperline 
     g.DrawCurve(pengraph, d, 0); //downline 

     g.Dispose(); 

     return box; 
    } 

現在我想使用一種顏色填充這兩條曲線之間的空間。如何才能做到這一點?

我在MSDN看了一下,發現了一個像FillClosedCurve的方法。但在這種情況下它並不能幫助我。

謝謝。

由圓弧Akh的評論解決

 joinedCurves.AddRange(u); 
     joinedCurves.AddRange(d.Reverse()); 

     PointF[] fillPoints = joinedCurves.ToArray(); 
     SolidBrush fillBrush = new SolidBrush(Color.FromArgb(50, 0, 0, 200)); 
     FillMode newFillMode = FillMode.Alternate; 

     g.FillClosedCurve(fillBrush, fillPoints, newFillMode, 0); 
+0

爲什麼你不FillClosedCurve工作?我認爲,如果你調用FillClosedCurve整個上面的曲線點集合,然後按照相反的順序跟着下面的曲線點,所以(對於上面的曲線,x = 1 ... 10,對於下面的曲線x = 10 ... 1) FillClosedCurve會給你你想要的結果。然後,您將會像以前一樣分別繪製曲線。 – Akh 2011-04-29 23:59:47

+0

@Akh Yeah它的一部分工作,但它連接上線的結束,以下線開始,它看起來很糟糕!我怎樣才能讓上線和下線成爲閉合曲線?他們目前沒有關閉,並且是兩條單獨的曲線。 – 2011-04-30 11:32:16

+0

@Akh ok ok我有想法,我不得不扭轉下來的曲線!謝謝! – 2011-04-30 11:34:44

回答

1
List<PointF> joinedCurves = new List<PointF>(); 
joinedCurves.AddRange(u);   
jointCurves.AddRange(d.Reverse());  
PointF[] fillPoints = joinedCurves.ToArray();  
SolidBrush fillBrush = new SolidBrush(Color.FromArgb(50, 0, 0, 200));  
FillMode newFillMode = FillMode.Alternate;  
g.FillClosedCurve(fillBrush, fillPoints, newFillMode, 0); 
相關問題