如何使用其他System.Drawing.Drawing2D.GraphicsPath
剪辑GraphicsPath
以获取新的GraphicsPath ?
注1:SetClip()可以是一个完整的System.Drawing.Graphics
对象,但这里需要的是某种相交的GraphicsPath来获取另一个GraphicsPath。
注2:此处讨论的方法(Intersecting GraphicsPath objects)返回一个区域。这里我们期待一个GraphicsPath
答案 0 :(得分:1)
我快速去了解,我得到的最接近的是:
var region = new Region(gp1);
region.Intersect(gp2);
var gpResult = new GraphicsPath();
gpResult.AddRectangles(region.GetRegionScans(new Matrix()));
gpResult.CloseAllFigures();
using (var br = new SolidBrush(Color.LightYellow))
{
e.Graphics.FillPath(br, gpResult);
//e.Graphics.DrawPath(Pens.Black, gpResult);
}
这个问题是GetRegionScans()
会给你数千个矩形,而不仅仅是线条的不同点。取消注释DrawPath方法以查看我的意思。
有一个用于管理裁剪的开源库,它似乎相当活跃here(通过this Stackoverflow question找到)。
我对此没有任何经验,但看起来能够做到你想做的事。