【发布时间】:2014-06-03 07:06:52
【问题描述】:
我有custom ImageView,我必须在custom shape 内设置图像,如多边形、星形等。我已成功在自定义形状中添加图像。但现在我想在图像上执行pinch to zoom。只有图像应该能够缩放并且形状应该保持原样。我不知道我应该如何进一步进行。
下面是我用来设置图像内部形状的代码:
@Override
protected void onDraw(Canvas canvas) {
if (!isInitialized) {
int w = getWidth();
int h = getHeight();
position.set(w / 2, h / 2);
isInitialized = true;
}
transform.reset();
transform.postTranslate(-width / 2.0f, -height / 2.0f);
transform.postRotate(getDegreesFromRadians(angle));
if (scale > 1)
transform.postScale(scale, scale);
transform.postTranslate(position.getX(), position.getY());
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
mCanvas.drawBitmap(src, transform, null);// bg
mCanvas.drawBitmap(mask, 0, 0, paint);// object
paint.setXfermode(null);
canvas.drawBitmap(result, 0, 0, paint);
}
编辑:
使用上面的代码,有些图像已经能够翻译和缩放。但即将出现的问题是 - 它在画布上显示重复的绘图。不知道为什么会这样。
请为我提供一些帮助/指导,了解如何进一步进行。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
您想在每次执行任何缩放手势时创建一个位图吗?会很慢
-
我已经在构造函数中编写了这个屏蔽代码。然后在
onDraw,我正在绘制位图。我错了吗? -
你不需要Bitmap,你可以使用Canvas.saveLayer
-
但是我应该如何执行捏合以仅缩放内部形状的图像??
-
Canvas.scale 或使用 Matrix 参数绘制你的图像
标签: android bitmap imageview shape