簡體   English   中英

Android - 繪制將位圖旋轉到畫布上的特定位置

[英]Android - paint rotated bitmap into a specific location on canvas

好吧也許我在這里遺漏了一些東西,但我被困了好幾個小時。 我創建了一個應用程序,用戶在圖片上繪制尺寸線。 現在我想繪制一些選擇點,表明該行已被選中。 這些點是一個特定的位圖,必須位於該行的末尾(箭頭后)並根據箭頭旋轉。 我創建了一個擴展View的類DrawSelectionPoint,我可以使用以下內容旋轉位圖:

selectionPoint = BitmapFactory.decodeResource(context.getResources(),
                    R.drawable.selectionpoint);
Matrix matrix = new Matrix();
        matrix.postRotate((float)Math.toDegrees(angle));        
canvas.drawBitmap(selectionPoint, matrix, null);

(其中angle是直線的角度)這樣我的位圖按照我想要的方式旋轉,但是它繪制在點0,0(屏幕的左上角)。

如果我使用類似的東西

canvas.save();

canvas.rotate();

canvas.drawBitmap(selectionPoint, x, y, null);

canvas.restore(); 

然后我發現在我想要的確切位置繪制位圖太難了(因為我在旋轉的畫布上繪制,然后我將其旋轉回來)。 我嘗試了一些歐幾里德旋轉變換,但我沒有運氣。

有沒有辦法應用矩陣旋轉,並給出我需要繪制位圖的點? 先感謝您!

假設您要繪制位圖中心位於(px,py)畫布坐標的位圖。 有一個成員變量

Matrix matrix = new Matrix();

並在你的onDraw:

matrix.reset();
matrix.postTranslate(-bitmap.getWidth() / 2, -bitmap.getHeight() / 2); // Centers image
matrix.postRotate(angle);
matrix.postTranslate(px, py);
canvas.drawBitmap(bitmap, matrix, null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM