2014-09-01 22 views
0

我想繪製橢圓形狀的箭頭,幾乎與here一樣,但我想縮放角度函數中的箭頭:縮小半徑較小時的箭頭,當ratius很大時增加​​它。在Android中以角度函數縮放位圖

的代碼是:

for (int i = 0; i < elements.length; i++) { 

      int centerX = (viewBitmapWidth/2) - (bitmap.getWidth()/2); 
      int centerY = (viewBitmapHeight/2) - (bitmap.getHeight()); 

      matrix.reset(); 


    double angle = Math.atan2(
     radiusx * Math.sin(2 * Math.PI * i/elements.length), 
     radiusy * Math.cos(2 * Math.PI * i/elements.length)); 

    matrix.postRotate((float) (angle * 180/Math.PI), 
     (float) (bitmap.getWidth()/2 + 5 * Math.sin(angle)), 
     (float) (bitmap.getHeight() + 5 * Math.cos(angle))); 

    matrix.postTranslate(centerX, centerY); 

    Bitmap tempBitmap = Bitmap.createScaledBitmap(bitmap, 
     bitmap.getWidth(), (int) (bitmap.getHeight() * Math.sin(angle)), false); 

    canvas.drawBitmap(tempBitmap, matrix, null);` 

,但我得到這個錯誤:

08-29 22:10:29.993: E/AndroidRuntime(1053): java.lang.IllegalArgumentException: width and height must be > 0 08-29 22:10:29.993: E/AndroidRuntime(1053): at android.graphics.Bitmap.createBitmap(Bitmap.java:638) 08-29 22:10:29.993: E/AndroidRuntime(1053): at android.graphics.Bitmap.createBitmap(Bitmap.java:586) 08-29 22:10:29.993: E/AndroidRuntime(1053): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:466) 08-29 22:10:29.993: E/AndroidRuntime(1053): at com.turvy.organicreaction.views.CircleView.onDraw(CircleView.java:156) 08-29 22:10:29.993: E/AndroidRuntime(1053): at android.view.View.draw(View.java:13458)ivityThread.java:4745) ...

我也試着矩陣的後縮放或預分頻的方法,但它was'nt好,改變了一切,甚至改變了立場。

你能幫我解決我的問題嗎? 感謝

回答

0

例外說,你要創建具有高度或寬度的位圖< 0,所以使用以下方法來創建位圖:

Bitmap tempBitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth(), 
    (int) (bitmap.getHeight() * Math.abs(Math.sin(angle))), false); 
+0

非常感謝,我did'nt照顧有關竇的負值。此外,我必須更改公式(例如:100 + bitmap.getHeight()* Math.abs(Math.sin(angle))),因爲竇也可以等於0 – 2014-09-01 22:18:12