GDI+如何填充任意封区域?就像windows画笔中的油漆桶那样的功能?
给出封闭区域内一点,填充区域(类似API中Floodfill()),要求可以使用透明色,期望:封装成函数funcfill(Imageimg,Pointpoint(鼠标坐标...
给出封闭区域内一点,填充区域(类似API中Floodfill()),要求可以使用透明色,期望:封装成函数funcfill(Image img,Point point(鼠标坐标在封闭区域内),Color border(边界颜色), Color fillcolor(填充颜色)),填充效率要高。
yatasoft的思路很好,但g.FillRegion(Brushes.Green, re); 是否会填充所有封闭区域呢?我所期望的是只填充某一坐标所在的封闭区域
就是说给出一点坐标,如果该坐标处于一个封闭区域就填充封闭区域,包括“回”字形区域 展开
yatasoft的思路很好,但g.FillRegion(Brushes.Green, re); 是否会填充所有封闭区域呢?我所期望的是只填充某一坐标所在的封闭区域
就是说给出一点坐标,如果该坐标处于一个封闭区域就填充封闭区域,包括“回”字形区域 展开
1个回答
展开全部
.net的Region可以实现你的要求,前提是这个封闭的区域点你要提供,比如你提供了100个点的区域通过线连接成封闭的,首先你要做个点集合pf,然后利用这个集合做参数创建一个GraphicsPath实例,在利用GraphicsPath实例做参数创建一个区域Region,接着可以使用Graphics实例的填充区域方法FillRegion,把你刚刚建立的区域做参数即可。方法演示下面来自网络,另外要自己写填充方法,这个只能请教别人了,呵呵。
PointF[] pf = new PointF[100];
byte[] bs = new byte[100];
for (int i = 0; i < 100; i++)
{
pf[i] = new PointF(yourXcoord, yourYcoord);
bs[i]=(byte)PathPointType.Line;
}
GraphicsPath gp = new GraphicsPath(pf,bs);
System.Drawing.Region re = new Region(gp);
g.FillRegion(Brushes.Green, re);
gp.Dispose();
re.Dispose();
能详细描述下“某一坐标所在的封闭区域”的意思吗?
这个方法就是填充整个封闭区域,只要是封闭的区域就可以
PointF[] pf = new PointF[100];
byte[] bs = new byte[100];
for (int i = 0; i < 100; i++)
{
pf[i] = new PointF(yourXcoord, yourYcoord);
bs[i]=(byte)PathPointType.Line;
}
GraphicsPath gp = new GraphicsPath(pf,bs);
System.Drawing.Region re = new Region(gp);
g.FillRegion(Brushes.Green, re);
gp.Dispose();
re.Dispose();
能详细描述下“某一坐标所在的封闭区域”的意思吗?
这个方法就是填充整个封闭区域,只要是封闭的区域就可以
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询