Android - 创建可移动的非矩形位图

时间:2012-02-28 17:10:49

标签: android path shape movable

我现在的目标是创建一个非矩形的位图,我也可以移动。我创建了一个可以像canvas的clipPath方法一样使用的路径。是否可以移动该剪辑路径?

另外,我这样做是最好的方法,还是有更好的方法来实现这个目标?

这是我的绘图功能:

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 个答案:

答案 0 :(得分:1)

我不完全确定我是否完全理解你要做的是什么,但是如果你只想将路径偏离其原始位置,那么moveTo就不是你走路的路径了添加将被保留。

相反,您可以在addPath中添加偏移坐标:

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

其中dx和dy是你的抵消。