我尝试在Android中相交2条路径。这在第一次尝试中工作正常。当我放大绘图(canvas.scale())时,相交的形状是不美观和丑陋的。 有谁知道如何解决我的问题?Android中的2条路径的真正交集(新路径)
我喜欢用蓝色矩形相交红色方块,红色方块内。
我的代码,结果是unprecise绿色路口缩放时:
这里是我的代码:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.scale(20,20);
Paint paint1 = new Paint();
paint1.setColor(Color.RED); paint1.setAntiAlias(true);
Path path=new Path();
path.moveTo(10, 10); path.lineTo(20, 10); path.lineTo(20, 20); path.lineTo(10, 20); path.close();
//canvas.drawPath(path, paint1);
Path path2=new Path();
path2.moveTo(15, 10); path2.lineTo(20, 10); path2.lineTo(20, 20); path.close();
paint1.setColor(Color.BLUE);
//canvas.drawPath(path2, paint1);
Region clip = new Region();
clip.set((int)0,(int)0, (int)300,(int)300);
Region region1 = new Region();
region1.setPath(path, clip);
Region region2 = new Region();
region2.setPath(path2, clip);
region1.op(region2, Region.Op.INTERSECT);
Path pnew=region1.getBoundaryPath();
paint1.setColor(Color.GREEN);
canvas.drawPath(pnew, paint1);
}
这是一个好主意,唯一的问题是区域交叉是如何工作的,即它是否会创建一个临时位图,在您的情况下它可能比屏幕大10倍?如果没有,我也可以使用这个解决方案来平滑边缘。真正的大问题是如何提取这个结果路径的点并保存它,我在这里试图:http://gamedev.stackexchange.com/questions/49239/converting-a-2d-curve-into-points- for-data-storage – Lumis 2013-03-09 09:52:34
您的解决方案解决了我的问题。所以如果你在我上面发布的链接中发布这个答案,我会奖励你300分! – Lumis 2013-03-09 12:09:53