我正在從一個項目中獲取DXF文件(來自autocad或任何其他繪圖程序的繪圖文件)的信息。我從中獲取信息並顯示面板的邊框。在這個面板中,我需要設置線條,但是當面板外面有座標的線條時,我不允許繪製它們。帶限制的C#繪圖
下面你可以找到一張圖片,也許它更清晰一點。
所以白線是磚,他們需要膠水線(黃色),海藍寶石線是輪廓線。在此線以外,不允許繪製膠水線(黃線)
正如您在NR 4BA87的磚上所看到的那樣,它會在面板外部繪製膠水線。
我需要某種形式的檢查,如果point
是我的等值線/面板裏面我可以得出它在其他不畫它。我怎樣才能做到這一點?
編輯:
我從列表繪製這些線因此這將是巨大的,如果我可以刪除(或不添加的話)從我的名單是我的面板外gluelines。
我得配點屬於contourpoints列表:
public List<PointF> ListContourPoints = new List<PointF>();
而且我已經得到了與膠線列表:
List<GlueLine> glueLines = new List<GlueLine>();
我GlueLine
類有2 PointF
在它,StartPosition
和EndPosition
。
,如果我得到的東西像這將是很好:
if(GlueLines.StartPosition is INSIDE panel && GlueLines.EndPosition is INSIDE panel)
{
glueLines.Add(gl);
}
您使用Windows Forms嗎?如果是這樣,只需設置['Graphics.Clip'](https://msdn.microsoft.com/en-us/library/system.drawing.graphics.clip%28v=vs.110%29.aspx)區域做任何繪畫。 (對於WPF圖形,有一個等價的方法。) –
但是磚需要繪製,即使它在面板外面,所以我不能屏蔽所有的繪圖 – Bart
因此只需在繪製需要的元素時設置剪裁區域被裁剪,並在之後恢復。 –