2012-08-14 52 views
1

我想畫的IC封裝的頂視圖,它應該像這樣(對不起,我想不出甚至畫它使用Windows的油漆不夠好!)加入弧使用的GraphicsPath

enter image description here

矩形

我正在使用一個路徑obeject,但我的路徑對象的結果是沒有接近我所期望的。至少完整的矩形本身繪製得很好,但我有問題做出我在示例圖片中看到的頂部弧線。如果你能指點我到正確的地方,會很好。這裏是我的代碼:

private GraphicsPath DrawDilBounds(Size size) 
    { 
     var p = new GraphicsPath(FillMode.Alternate); 
     p.StartFigure(); 
     p.AddLine(0, 0, 0, size.Height); 
     p.AddLine(0, size.Height, size.Width, size.Height); 
     p.AddLine(size.Width, size.Height, size.Width, 0); 
     p.AddLine(size.Width, 0, (size.Width/2) - 10, 0); 
     p.AddArc(size.Width/2 - 10, 0, 10, 10, 10, 10); //This arc looks like no arc! 
     p.AddLine((size.Width/2) + 10, 0, 0, 0); 
     p.CloseFigure(); 

     return p; 
    } 

所以我在做什麼這裏開始從左上角一些線,左下角,到右下角和finaly到右上角,然後我添加了一行從頂部在頂部中間的右上角,減去10個像素,然後我想添加寬度爲20像素的圓弧,然後完成繪圖回到左上角。

回答

3

用邊界框指定圓弧。使用10作爲半徑給出一個20 x 20(您使用10 x 10)的盒子,其左上角位於弧線中心(-10,0)的(-10,-10)處。最後兩個參數必須是,起始和結束角度。既然你從左到右繪製它將是0和180度(你用過10和10)。你還摸索了兩條線的長度,它們應該是寬度-10的一半(你用+10)。修復:

 p.AddLine(size.Width, 0, (size.Width/2) + 10, 0); 
     p.AddArc(size.Width/2 - 10, -10, 20, 20, 0, 180); 
     p.AddLine((size.Width/2) - 10, 0, 0, 0); 

它可以幫助您:

enter image description here

+0

我永遠感激你纔好幫助漢斯!我想90%的聲譽僅僅是因爲你的答覆是回答! – 2012-08-14 12:15:24