2014-02-14 15 views
2

我通過矩陣有翻蓋/ unflip圖像的問題,如果有矩陣規模如何翻轉和unflip矩陣,如果有一定的規模

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 - 它的做工精細,但如果sacale = 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

我唯一的這個問題在我繪製的onDraw翻轉畫布()方法:

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