2012-02-28 49 views
0

我現在的目標是創建一個非矩形的位圖,我也可以移動。我創建了一個可以像canvas一樣使用clipPath方法的路徑。是否有可能移動clipPath?Android - 創建一個可移動的非矩形位圖

另外,我在做這個最好的方法,還是有更好的方法來完成這個?

這是我的繪製函數:

public void draw(Canvas c){ 

    // Paint object, for outline of clip Path. 
    Paint p = new Paint(); 
    p.setStyle(Style.STROKE); 
    p.setColor(Color.RED); 

    // A currently defined path to clip the bitmap with 
    Path clipPath = new Path(); 
    clipPath.moveTo(top_left.getX() + nodes.getNodeVals('L').getX(), top_left.getY() + nodes.getNodeVals('T').getY()); 
    clipPath.addPath(outline); 

    c.save(); // Save the canvas (rotations, transformations, etc) 
    c.clipPath(clipPath); // Create a clip region 
    c.drawPath(clipPath, p); // Draw that clip region in red 
    c.drawBitmap(img, top_left.getX(), top_left.getY(), null); // Draw the bitmap in the clip 
    c.restore(); // Restore the canvas (rotations, transformations, etc) 

} 

clipPath.moveTo線是在那裏我有我的問題,我相信。基本上,它應該創建一個新的路徑,位於用moveTo的x和y值定義的位置(我相信我已經在其他地方正確設置了這些路徑)。路徑預先創建,並存儲到outline中,addPath部分應該將大綱添加到clipPath

在此先感謝!

回答

1

我不完全確定,如果我完全理解你在做什麼,但是如果你只是想從原始位置偏移路徑,moveTo不是路徑座標的路徑你添加的將被保留。

相反,你可以添加偏移座標在你讓addpath:

//clipPath.addPath(outline); 
clipPath.addPath(outline, dx, dy); 

其中dx和dy是你的偏移。