使用drawBitmap和矩形缩放位图 - Android

时间:2011-06-21 08:58:47

标签: android image bitmap zoom

我正在开发一个小型图像编辑器。基本上,用户可以在画布中插入一些图像,并通过与手指的交互来移动它们。我在缩放方面遇到了一些麻烦。我遵循了这个tutorial的想法来使用位图,并将变换应用于两个矩形。之后,如果我们使用android.graphics.Canvas.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)在画布上绘制位图,则应用转换。到目前为止,不适合我。

我将所有图像存储在图像数组ColorBall中。当我检测到有一个缩放手势时,只有当它超过某个图像时(这个工作到目前为止),我在该图像上应用了转换(值是虚拟的,只是想检查它是否有效):

colorballs.get(balID-1).getmRectDst().left   = getLeft();
colorballs.get(balID-1).getmRectDst().top    = getTop();
colorballs.get(balID-1).getmRectDst().right  = getRight();
colorballs.get(balID-1).getmRectDst().bottom = getBottom();

colorballs.get(balID-1).getmRectSrc().left   += 10;
colorballs.get(balID-1).getmRectSrc().top    += 10;
colorballs.get(balID-1).getmRectSrc().right  += 10;
colorballs.get(balID-1).getmRectSrc().bottom += 10;

在OnDraw事件中,对于数组中的所有图片,我找到它们,然后使用矩形对它们进行缩放。到目前为止,缩放的部分不起作用:

//draw the balls on the canvas
for (ColorBall ball : colorballs) {
    canvas.drawBitmap(ball.getBitmap(), ball.getX(), ball.getY(), null);
    canvas.drawBitmap(ball.getBitmap(), ball.getmRectSrc(), ball.getmRectDst(), mPaintBalls);
}

有什么建议可以在这里找到什么?提前谢谢!

1 个答案:

答案 0 :(得分:0)

看起来你正在添加到底部/右边,所以不是缩放,而是实际上只是将背景源移动到右边十。

colorballs.get(balID-1).getmRectSrc().right  -= 10;
colorballs.get(balID-1).getmRectSrc().bottom -= 10;