마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

canvas를 가운데로 위치시키고싶어요

0 추천

canvas위에 비트맵을 올려놓으려고 하는데요 그것을 화면 정가운데에 올리고 싶습니다.

핸드폰 화면 크기와 drawble에 있는 사진 크기도 받아와서

canvas.drawBitmap() 쓰거나

canvas.translate()를 써도 가운데에는 올려지지 않네요 ㅠㅠ

혹시 가운데로 올릴 수 있게 하는 법 있나요 그렇다면 어떻게 해야하나요 ㅠㅠ 저희 코드 첨부할게요

//사진 크기 가져오기
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.t1);
int wid2 = bitmap.getWidth();
int hgt2 = bitmap.getHeight();

//핸드폰 화면크기 가져오기
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);     
int screenWidth = metrics.widthPixels;     
int screenHeight = metrics.heightPixels;

//canvas에 뿌리기
 Bitmap newImage = Bitmap.createBitmap(wid, hgt, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(newImage);

canvas.drawBitmap(cameraBitmap, 0f, 0f, null);
 //canvas.drawBitmap(cameraBitmap, screenWidth/2-wid2/2, screenHeight/2-hgt2/2, null);
canvas.translate(screenWidth/2-(wid2+30), screenHeight/2-(hgt2+30));
Drawable drawable = getResources().getDrawable(R.drawable.t1);
drawable.setBounds(20, 30, drawable.getIntrinsicWidth()+20,   drawable.getIntrinsicHeight()+30);
 drawable.draw(canvas);

 

익명사용자 님이 2014년 8월 21일 질문

2개의 답변

0 추천
캔버스는 뷰위에 그려지는 겁니다.

즉 캔버스가 그려지는 뷰자체를 중앙에 위치시킨다면 캔버스 또한 중앙으로 위치 하겠죠~~~!

저러한 계산조차 필요하지 않습니다~!
ThisPlus (46,920 포인트) 님이 2014년 8월 22일 답변
너무 글을 급하게 쓰다보니 제일 중요한 거를 빼먹었는데...
저희는 저 canvas를 카메라 프리뷰 , SurfaceView에 올릴거에요 ㅠㅠ
그래도 저의 답변은 똑같습니다~!
캔버스는 뷰 입니다~!
0 추천
canvas.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)

이걸 이용하세요

dst에 원하는 영역을 지정하면 됩니다.
alkyne (22,960 포인트) 님이 2014년 8월 22일 답변
위에 답변과 같습니다 ㅠㅠ..제일 중요한 말을 빼먹었네요 ㅠㅠ
...