如果有一定比例,如何翻转和解开矩阵

时间:2014-02-14 06:17:56

标签: android image matrix drawable

如果矩阵具有比例

,我有通过矩阵翻转/解除图像的问题
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

有什么想法吗?

1 个答案:

答案 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);
        ...
    }