2014-09-24 161 views
1

嘿,我在製作的應用程序中遇到了這個問題。我需要創建一個預先翻譯的位圖,這意味着從舊的位圖創建一個新的位圖,其中像素按指定的量移動。我認爲我可以通過設置後置或預翻譯的矩陣來實現這一點,但是這些都不會移動像素或做任何可見的事情。用矩陣轉換位圖

諸如旋轉或縮放之類的函數可以在位圖上工作並執行所期望的操作。翻譯也適用於畫布,但它不會移動我想要的位圖像素。它甚至有可能做到這一點?

我做錯了爲什麼翻譯功能不能在位圖上工作?

這是一段代碼,顯示我在做什麼。

private void move(float dx, float dy) { 

    moveX = (float) (dx*complexScale); 
    moveY = (float) (dy*complexScale); 

    //canvasMatrix.setTranslate(dx,dy); 

    if(!render.isAlive()) { 

     focusX = focusX0 - dx*complexScale; 
     focusY = focusY0 - dy*complexScale; 
     bitmapMatrix.setTranslate(dx, dy); 
     needRefresh = true; 
    } 

} 

private void generate() { 

    if (!render.isAlive()) { 

     render = new Thread(generator); 
     fractal = Bitmap.createBitmap(fractal,0,0,mapWidth,mapHeight,bitmapMatrix,true); 
     setComplexAxis(); 
     render.start(); 
    } 

} 

回答

0

翻譯是在畫布上完成的。我不完全確定你是否可以操縱像素。我建議爲位圖圖像創建一個視圖,並在視圖的畫布上應用翻譯