2017-11-29 2 views
0

캔버스를 사용하여 Android 프로젝트를 개발 중이며 크기 조정 문제가 있습니다. 좀 더 간단하게하기 위해 예제를 사용할 것입니다.Android에서 캔버스 크기 조정

내보기 : 폭 1300px 및 높이 800px라고 가정 해 보겠습니다. 정적 폭 1300px가되지만 높이는 가변적 인 내부에 캔버스를 넣을 것입니다. 내 캔버스가 800px 이상이면 canvas.scale()을 사용하려고 했으므로 캔버스가 뷰에서 벗어나지 만 정확한 값을 계산하여 배율을 계산하는 방법을 알지 못합니다.

아이디어가 있으십니까?

+0

정확하게 질문이 올지 모르겠습니다. 'canvas.scale (xScale, yScale)'을 호출 할 때 yScale 요소를 얼마만큼 설정할지 알 수 있습니까? 또한 캔버스 크기를 항상 장치의 너비와 높이와 같게하려고합니까? –

답변

0

개인적으로 제 생각에 당신은 새로운 Canvas을 만들어야한다고 생각합니다. 비트 맵의 ​​크기를 먼저 조절해야합니다. 아래의 방법을 사용하여 뷰의 크기와 비트 맵의 ​​크기 사이의 비율을 계산합니다.

public static float computeScale(float w1, float h1, float w2, float h2) { 
    if (w1 > 0 && h1 > 0 && w2 > 0 && h2 > 0) { 
     return Math.max(w1/w2, h1/h2); 
    } 

    return 1; 
} 

은 그래서 규모와 새로운 비트 맵의 ​​폭, 높이 아래의 코드에 의해 계산됩니다 :

float scale = computeScale(viewWidth, viewHeight, bitmapWith, bitmapHeight); 
if(scale > 1){ 
    int newWidth = Math.round(bitmapWidth/scale); 
    int newHeight = Math.round(bitmapHeight/scale); 
} 

// The code for resizing the source bitmap with the newWidth and newHeight. 
// Bitmap newBitmap = ...; 

마지막으로, 새 Canvas을 만들기 위해 새 비트 맵을 사용합니다.

Canvas canvas = new Canvas(newBitmap);