如果矩阵具有比例
,我有通过矩阵翻转/解除图像的问题public void flipImage() {
setFlip(!flip);
float[] values = new float[9];
matrix.getValues(values);
float sx = values[Matrix.MSCALE_X];
float sy = values[Matrix.MSCALE_Y];
Log.w(VIEW_LOG_TAG, "sx= " + sx);
matrix.preScale(isFlip() ? -sx : sx, sy);
matrix.postTranslate(isFlip() ? mDrawable.getIntrinsicWidth()
: -mDrawable.getIntrinsicWidth(), 0);
invalidate();
}
如果缩放1.0f - 它的工作正常,但如果是真的!= 1.0f图像翻转如此奇怪(使用翻转矩阵更改比例值): 我的调试
02-13 19:40:24.895: W/View(22275): sx= 1.3615643
02-13 19:40:32.865: W/View(22275): sx= -1.8538573
02-13 19:41:31.995: W/View(22275): sx= 1.491676
02-13 19:41:33.235: W/View(22275): sx= -2.2250972
有什么想法吗?
答案 0 :(得分:0)
我唯一的问题是在我的drawable onDraw()方法中翻转Canvas:
@Override
public void draw(Canvas canvas) {
...
count = blendCanvas.save();
blendCanvas.concat(matrix);
blendCanvas.scale(isFlip() ? -1 : 1, 1);
blendCanvas.translate(isFlip() ? -getIntrinsicWidth() : 0, 0);
blendCanvas.drawBitmap(mBitmap, 0, 0, bitmapPaint);
blendCanvas.restoreToCount(count);
...
}