Android 画板(canvas)画bit地图的时候如何指定绘画时的起始位置

Android 画板(canvas)画bitmap的时候怎么指定绘画时的起始位置?


各位大神,先详细看我这个图和文字解释内容:(问题就在图中)


Android 画板(canvas)画bit地图的时候如何指定绘画时的起始位置

好!看完之后,我就展示一下实现这些的相关代码,我再强调一下,在这里面就只有一个画板!里面的三个图片是先用Path 画好矩阵形状,再把bitmap图片画进去的。
下面是先画好矩阵形状的代码:

// 画好矩阵模块
private void initPath() {
float cpad = padding / 2;// padding = 10
// 视图宽高
float w = getWidth();
float h = getWidth();
float bx = w / 2;//
float by = h / 2;// 相当于中心点

top = new Path();
left = new Path();
right = new Path();
// 上图
top.moveTo(padding * 1.7f, padding);
top.lineTo(w - padding * 1.7f, padding);
top.lineTo(bx, by - 0.7f * padding);
top.close();
// 左图
left.moveTo(padding, padding * 1.7f);
left.lineTo(bx - cpad, by + 0.2f * padding);
left.lineTo(bx - cpad, h - padding);
left.lineTo(padding, h - padding);
left.close();
// 右图
right.moveTo(w - padding, padding * 1.7f);
right.lineTo(bx + cpad, by + 0.2f * padding);
right.lineTo(bx + cpad, h - padding);
right.lineTo(w - padding, h - padding);
right.close();
}


现在在onDraw方法中才开始画了,请注意看注释是先画矩阵,再画bitmap图片

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (topImage != null) {

canvas.save();
canvas.clipPath(top);// 先画好模块
canvas.drawBitmap(topImage, topMatrix, paint);// 再画图
canvas.restore();

canvas.save();
canvas.clipPath(left);
canvas.drawBitmap(leftImage, leftMatrix, paint);
canvas.restore();

canvas.save();
canvas.clipPath(right);
canvas.drawBitmap(rightImage, rightMatrix, paint);
canvas.restore();
}
}

问题就是说怎么解决绘制图3的起始位置,就这一个问题!还请大神们指导指导!但是注意了!我在onDraw方法中画的时候必须是这样的:
canvas.drawBitmap(rightImage, rightMatrix, paint);
而不是这样设置坐标的:
canvas.drawBitmap(bitmap, x, y, null); 

------解决思路----------------------

试试这个?

右图的path 也从0,0开始画
然后 绘图时候
 canvas.save();
  canvas. translate(x,y);
       canvas.save();
            canvas.clipPath(right);
            canvas.drawBitmap(rightImage, rightMatrix, paint);
            canvas.restore();
  canvas.restore();