我想繪製橢圓形狀的箭頭,幾乎與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好,改變了一切,甚至改變了立場。
你能幫我解決我的問題嗎? 感謝
非常感謝,我did'nt照顧有關竇的負值。此外,我必須更改公式(例如:100 + bitmap.getHeight()* Math.abs(Math.sin(angle))),因爲竇也可以等於0 – 2014-09-01 22:18:12