3

我有一个自定义的 ImageView,它允许缩放、平移、画线、矩形等。假设在图像上画了一条线。现在,我想要的是,当用户触摸那条线来移动它时,该部分的放大图像应该显示在 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"

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

4

0 回答 0