我嘗試在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