如何在imageview的画布上获取onTouch部分图像,并在同一画布中以放大的形式显示该部分

时间:2013-05-29 08:11:08

标签: android android-canvas

我有一个自定义ImageView,允许缩放,平移,绘制线条,矩形等。说在图像上绘制一条线。现在,我想要的是,当用户触摸该线移动它时,该部分的放大图像应该显示在图像视图的右上角(即画布内)的某处,这允许用户准确地放置线。放大的图像部分也应包含该行,并且应该在用户移动线时不断更新图像。

我尝试过使用着色器

mShader = new BitmapShader(myBitmap, TileMode.CLAMP, TileMode.CLAMP);
    shademat=new Matrix();
    mPaint = new Paint();
    mPaint.setShader(mShader);

在ACTION_DOWN事件中,我有

 shademat.reset();
 shademat.postScale(2f, 2f, curr.x, curr.y);
 prex=curr.x;
 prey=curr.y;

和onDraw()

 mShader.setLocalMatrix(shademat);   
 canvas.drawCircle(prex, prey, 100, mPaint);

但是我无法将画布图像放到着色器上,b'coz不知何故

canvas.setBitmap(myBitmap) 
即使在通过

禁用“强制GPU渲染”后,

也会在ICS上出错

android:hardwareAccelerated="false"

此外,我没有找到一种方法让图像部分显示在画布的右上角。 有没有其他方法可以将图像从画布转换为位图?请帮忙。

0 个答案:

没有答案