2012-05-11 116 views
0

我从网络接收样本(浮点阵列)并将它们绘制为SurfaceView中的曲线。样本会定期更新,因此曲线是动态的。 在我的计划,我创造出的曲线将被抽入,这样的位图:Android位图/画布放大或缩小

Bitmap bmp = Bitmap.createBitmap(width, height, Config.ARGB_4444); 
Canvas canvas = new Canvas(bmp); 
drawCurve(canvas); 

void drawCurve(Canvas canvas, float[] buffer) { 
     ... 
     canvas.drawLine(x1, buffer[i], x2, buffer[i+1], paint); 
     ... 
} 

...

private class RenderThread extends Thread { 
    public void run() { 
     c = mHolder.lockCanvas(null); 
     c.drawBitmap(bmp, 0, 0, null); 
     mHolder.unlockCanvasAndPost(c); 
     ... 
    } 
} 

我想支持的曲线可以放大和缩小。为了有效地绘制曲线,绘制曲线方法只是更新新样本,也就是说,擦除旧区域,并在该区域绘制新样本。我能怎么做?谢谢!

+0

http://stackoverflow.com/questions/7704086/how -do -i-modify-touchimageview-with-two-tap-to-zoom-in-and-out/7816495#7816495这将包含一个库,将解决问题 – ingsaurabh

回答

0

它可以帮助你........... 来自:http://android-er.blogspot.in/2010/07/skew-bitmap-image-using-matrix.html

看到drawMatrix功能:

matrix.postScale(curScale, curScale); 
    matrix.postRotate(curRotate); 
    matrix.postSkew(curSkewX, curSkewY); 

    Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bmpWidth, bmpHeight, matrix, true); 
+1

谢谢你的回复!我知道在drawBitmap中使用矩阵来缩放位图。但需要克隆新的位图并缩放新的位图,然后使用其画布回退到前一个位图。 –