2011-06-21 43 views
2

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

我将所有图像存储在一个图像数组中,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); 
} 

的我能来这里失踪任何建议?提前致谢!

+0

我用同样的例子在画布上缩放图像,但没有......你解决了它吗?如果是的话,告诉我方式。 –

回答

0

它看起来像你正在添加到底部/右侧,所以,而不是放大,你实际上只是将背景源移到右侧。

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