我正在从一个项目中获取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
因此只需在绘制需要的元素时设置剪裁区域被裁剪,并在之后恢复。 –