2014-09-24 223 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

翻译是在画布上完成的。我不完全确定你是否可以操纵像素。我建议为位图图像创建一个视图,并在视图的画布上应用翻译