2014-06-06 71 views
0

我已經爲多個位圖,矩陣和顏料製作了陣列列表,並且我想在我的主線程中動態更改它們。這是我的drawView函數(切一些代碼,以縮短):Java Android - 繪製後旋轉位圖

public DrawView(Context context, AttributeSet attrs){ 
     bitmapArray.add(bitmap1); 
     Matrix matrix2 = new Matrix(); 
     matrixArray.add(matrix2); 
     Paint paint = new Paint(); 
     paintArray.add(paint); 
} 

protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    for (int i = 0; i < 50; i++) { 
     canvas.drawBitmap(bitmapArray.get(i), matrixArray.get(i), paintArray.get(i)); 
    } 
} 



public void translate(int Num, float x, float y){ 
    matrixArray.get(Num).postTranslate(x,y); 

} 

我想什麼是從我的主線程中調用drawview.translate像這樣:

drawView.translate(Num, image.getX(), image.getY()); //image is a moving imageview 

我找不到許多關於使用主線程來控制繪製的位圖,這樣如果有人能解釋我會非常感激

回答

0

我終於找到了一種方法來繪製我的位圖,然後繼續我的命令/旋轉它:

在我的O n繪製(){

canvas.drawBitmap(bitmap1, null, rectf, sPaint); 

動產使用rectF,以及旋轉:

rotation = ((float) Math.toDegrees(Math.atan2((fingery - rectf.centerY()),(fingerx - rectf.centerX()))); 

     matrix.setRotate(rotation2+90, rectf.centerX(), rectf.centerY()); 
     bitmap1 = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); 

我有,當我的位圖旋轉的麻煩,它改變大小。我使用它來修復它:

 rectf.right = rectf.centerX() + bitmap1.getWidth()/2; 
     rectf.left = rectf.centerX() - bitmap1.getWidth()/2; 
     rectf.top = rectf.centerY() - bitmap1.getHeight()/2; 
     rectf.bottom = rectf.centerY() + bitmap1.getHeight()/2; 

我希望這可以幫助一些人!