public class POCII extends Activity {
myView mv = new myView(this);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(mv);
}
}
class myView extends View {
public myView(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawRect(0,0,100,100, paint);
canvas.clipRect(0,0,50,50);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,上面的代码是否应该绘制一个矩形然后裁剪左上角?矩形没有被裁剪.
请解释一下clipRect的作用.什么是实际剪裁?在给定坐标的情况下,它是否以矩形的形式剪辑?如果是这样,为什么上面的代码不起作用?
我正在尝试将画布绘制操作剪切成弧形楔形.但是,在将剪切路径设置为画布后,我没有得到预期的结果.
为了说明,这是我正在做的事情:

path.reset();
//Move to point #1
path.moveTo(rect.centerX(), rect.centerY());
//Per the documentation, this will draw a connecting line from the current
//position to the starting position of the arc (at 0 degrees), add the arc
//and my current position now lies at #2.
path.arcTo(rect, 0, -30);
//This should then close the path, finishing back at the center point (#3)
path.close();
Run Code Online (Sandbox Code Playgroud)
这是有效的,当我简单地绘制这个路径(canvas.drawPath(path, paint))时,它会绘制如上所示的楔形.但是,当我将此路径设置为画布的剪切路径并将其绘制到其中时:
//I've tried it with and without the Region.Op parameter
canvas.clipPath(path, Region.Op.REPLACE);
canvas.drawColor(Color.BLUE);
Run Code Online (Sandbox Code Playgroud)
我得到以下结果(仅留下楔形以显示参考):

所以它似乎剪切到了它的边界矩形Path,而不是它 …
我有一些静态图像如下:

现在,我想要的是,当我触摸脸部或手部时,所选择的颜色应该填充在该皮肤部分上.
见下面的结果图:

那么如何获得上面的结果?重做和撤消功能也应该存在.
我尝试使用FloodFill颜色,但这样做我只能对特定部分进行着色.因为FloodFill只填充颜色,直到相同的pixwl颜色出现.如果触摸位置像素颜色发生变化,它将不会填充颜色.
所以Usinf FloodFill我得到了如下图像的结果,如果我按下手,那么只有手部分将填充颜色,而不是它我想要填充另一只手和脸的颜色.

所以请在这种情况下帮助我.
EDITED
一些答复后,我得到了像解决这一个.
但仍然存在内存问题.它消耗大量内存来绘制颜色.所以,任何人都可以帮助我吗?
我无法找到Android的Floodfill算法实现.
知道Android中是否有Floodfill API,如果没有,还有其他选择吗?