如何将绘制的图像反转为画布?
我有以下内容:
canvas.save();
canvas.drawBitmap(image.current(), null, currentBounds(), Paints.BLANK);
canvas.restore();
如何将当前图像在x轴上绘制成currentBounds()?
我已经找到了一些表明Matrix使用情况的答案,但我不知道是否有更简单的方法?这样的油漆带有一些旗帜。
编辑:
以下是我尝试使用Matrix转换:
Rect currentBounds = currentBounds();
currentBounds.offset((int)offset.x(), (int)offset.y());
float scale = image.current().getWidth() / currentBounds.width();
Matrix matrix = new Matrix();
matrix.setScale(- scale - 1, scale + 1);
matrix.postTranslate(currentBounds.left, currentBounds.top);
canvas.drawBitmap(image.current(), matrix, Paints.BLANK);
canvas.drawRect(currentBounds, Paints.STROKE_BLUE);
以下是这次抽奖的结果:
https://dl.dropbox.com/u/28683814/game.png
可以看出,精灵正在从0,0向左绘制并且它没有完全完成currentBounds(),我做错了什么?
答案 0 :(得分:0)
使用
canvas.scale(-1,0,width/2,height/2);
正如我自己的回答here所述。
虽然,我会指出,你需要花一点时间来理解矩阵,它会让你成为一个更好的Android程序员。
答案 1 :(得分:0)
使用它。我觉得这很容易。
canvas.save();
canvas.rotate(180, x, y);
canvas.drawBitmap(bitmap, x, y, null);
canvas.restore();
答案 2 :(得分:0)
好吧,我解决了这个问题:
Rect currentBounds = currentBounds();
currentBounds.offset((int)offset.x(), (int)offset.y());
float scale = (float) currentBounds.width() / (float) image.current().getWidth();
boolean leftMovement = movingLeft();
Matrix matrix = new Matrix();
matrix.setScale(leftMovement ? -scale : scale, scale);
matrix.postTranslate(leftMovement ? currentBounds.right : currentBounds.left, currentBounds.top);
canvas.drawBitmap(image.current(), matrix, Paints.BLANK);
但是这个“leftMovement?currentBounds.right:currentBounds.left”看起来并不正确