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

Canvas객체 질문드립니다..

0 추천

canvas를 이용하여 비트맵이미지를 회전시키려하는데 적용이 되지않아서 질문드려봅니다.

 

일단 onCreate쪽에  

 

    pin1 = BitmapFactory.decodeResource(getResources(), R.drawable.meter_needle);

        //비트맵 이미지 저장
 
        originalPinX = pin1.getWidth(); //원본 바늘이미지크기
        originalPinY = pin1.getHeight(); //원본 바늘이미지크기
 
 
onDraw메서드 
           Canvas canvas = new Canvas();
           canvas.rotate(angle, originalPinX/2, originalPinY/2);   /앵글변수는 seek바에따른 각도수치, 기준좌표
           canvas.drawBitmap(pin1, dialX-pinW/2, dialY-pinH+(int)(pinH/4.8),null);
                                //캔버스객체로 비트맵그려주기
 
seekbar이벤트에서 onDraw메서드 호출
 
이렇게짰는데 이미지회전은 전혀 미동도안하네요..
아무리 검색해서 뒤져봐도
이미지 회전시 Canvas객체쓰는법이 틀린거같진않은데 무언가 빠진건가요?ㅠㅠ
 
 
이미 matrix를 사용하여 이미지회전은 성공시켰는데 matrix를 사용하면 이미지가 찌그러지고
canvas를 사용해야 리소스관리가 좋다고해서 하는중인데 맞는지도 잘 모르겠네요..

 

예림이그코드좀바바 (2,470 포인트) 님이 2015년 1월 22일 질문
예림이그코드좀바바님이 2015년 1월 22일 수정

2개의 답변

+1 추천
 
채택된 답변
굳이 캔버스를 사용안해도 됩니다.

레이아웃에 적당히 배치하고 소스에서 매트릭스로 잡아 돌리심됨돠
nicehee (73,100 포인트) 님이 2015년 1월 22일 답변
예림이그코드좀바바님이 2015년 3월 2일 채택됨
캔버스객체 사용한 위에 소스는 혹시 작동안한 원인이 예상이되시나요?
+1 추천
canvas를 직접 생성하면 안되고, onDraw 메소드에 넘어온 것을 사용해야 합니다.
익명사용자 님이 2015년 1월 23일 답변
아하 그런거였군요 그럼
onDraw(Canvas canvas){
rotate
drawbitmap
}
하고

seekBar이벤트리스너에서 호출할땐 어떻게
해야될까요?...
invalidate메서드 호출해주면 그려지나요?

소스코드가 메인액티비티에서 그려놓은건데
뷰를 생성안해서 invalidate도 작동이안되네요,,
...