簡體   English   中英

Android通過裁剪角圍繞中心點旋轉位圖

[英]Android rotating bitmap around center point with cropping the corners

介紹

大家好!

我正在制作一個可旋轉位圖的應用程序,該位圖包含基於指南針更改的大學地圖。

我的大學和附近地區有一個方形的頭像,在我的手機上有點扁平:

在此處輸入圖片說明

現在,我只需要顯示校園區域,就可以通過在自定義視圖的畫布上繪制該位圖的Rectangle部分來實現:

在此處輸入圖片說明

問題

我的問題是我無法實現圍繞中心點旋轉位圖。

現在旋轉30度看起來像這樣:

在此處輸入圖片說明

它根本不起作用,校園從較小的矩形中消失了。

我不希望將圖像繞其中心旋轉,並且我希望圖像的角離開畫布,因此校園保持在同一位置並且可以很好地旋轉。

目前的方法

為了顯示地圖,我使用覆蓋了onDraw方法的自定義視圖。

@Override
protected void onDraw(Canvas canvas) {
    Rect rekt = new Rect();
    Rect tyrRekt = new Rect();

    super.onDraw(canvas);

    tyrRekt.set(0, 0, canvas.getWidth(), canvas.getHeight());
    rekt.set(350, 370, 1520, 900);

    canvas.drawBitmap(bitmap, rekt, tyrRekt, null);
}

並且位圖在AsyncTask中旋轉以節省一些內存,RotateTaskParams是具有原始位圖和度的對象:

@Override
protected Bitmap doInBackground(RotateTaskParams... params) {
    Matrix matrix = new Matrix();
    matrix.postRotate(params[0].deg);
    rotateBitmap = new WeakReference<Bitmap>(Bitmap.createBitmap(params[0].bmp, 0, 0 ,params[0].bmp.getWidth(), params[0].bmp.getHeight(), matrix, true ));
    return rotateBitmap.get();
}

我嘗試過的事情

我在搜索很多東西,在這里閱讀了大量類似的問題,並嘗試了很多答案。 什么對我不起作用(也許我做錯了什么)

  • postTranslating矩陣(以0,0為中心)
  • 旋轉畫布
  • postRotate圍繞位圖的中心

    matrix.postTranslate(params [0] .deg,params [0] .bmp.getWidth()/ 2,params [0] .bmp.getHeight()/ 2);

params [0] .bmp始終是原始圖像。

提前致謝!

你試一試

matrix.postRotate(90);
Bitmap rotated = Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(),
                            originalBitmap.getHeight(), matrix, true);

然后在您的xml中,將android:scaleType =“ centerCrop”設置為ImageView標簽。 希望能幫助到你。

幫助我以良好的性能實現所需結果的方法是從位圖繪制切換到Google Maps,它的API具備了這里所需的一切

暫無
暫無

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

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