2012. 8. 11. 11:27
안드로이드 - 이미지 개념(Drawable, Bitmap, Canvas) 안드로이드 이야기2012. 8. 11. 11:27
728x90
반응형
안드로이드 - 이미지 개념(Drawable, Bitmap, Canvas)
Android/일반 2011/08/29 19:05안드로이드에서 이미지에 대한 개념은 다음과 같다.
1. Drawable
- 기본적으로 resource에 저장되어 있는 이미지의 경우 Drawable이라는 Object를 생성하여
화면에 그릴 수 있다.
1
2
3
4
5
6
7
8
9 |
Drawable drawable = getResources().getDrawable(id); drawable.setBounds( 0 , 0 , drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); // (int left, int top, int right, int bottom) 또는 drawable.setBounds(Rect rect); @Override onDraw(Canvas canvas){
drawable.draw(canvas); } |
2. Bitmap
- 임의의 Bitmap을 생성하고 Bitmap에 원하는 내용을 그릴 수 있다.
- 이렇게 만들어진 Bitmap에 직접 그림을 그리거나 다른 이미지를 그릴려고 하면 새로운 Canvas를 만들어야한다.
그러면 향후에 canvas에 그리는 모든 작업은 Bitmap에 반영이 된다.
1
2
3
4
5 |
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888); // Config.ARGB_8888(투명값 지정 가능) 말고 Config.RGB_565도 있다. Canvas canvas = new canvas(); canvas.setBitmap(bitmap); |
3. Bitmap과 Drawable간의 변환
- 안드로이드에서는 Bitmap을 직접 다루기보단 대부분 Drawable이라는 wrapping된 형태로 이미지를 처리하기 때문에
Bitmap의 경우 종종 Drawable로 변환해야 하는 경우가 있다. 이를 위해서 BitmapDrawable이라는 클래스가 존재한다.
1 |
Drawable drawable = (Drawable)( new BitmapDrawable(bitmap)); |
4. Canvas 처리
w*h 크기의 drawable 오브젝트가 있을 때 setBounds를 이용하여 임의의 좌표(x,y)에 원래 크기대로 출력하려면 아래와 같다.
1
2 |
obj.setBounds(x, y, x+w, y+h); obj.draw(canvas); |
(getIntrinsicWidth()/Height()로 항상 구하던지 별도의 변수에 값을 유지해야 한다.)
그래서 위와 같은 방법보다 아래와 같이 canvas의 좌표이동변환식을 이용하는게 깔끔하다.
1
2
3
4
5
6
7
8 |
obj.setBounds( 0 , 0 , w, h); // drawable을 최초로 생성했을때 한 번만 지정하면 됨 canvas.save(); // 현재 변환식을 저장 canvas.translate(x, y); // 좌표이동과 관련된 변환식 적용 ... obj.draw(canvas); // drawable을 그린다. ... canvas.restore(); // 원래 변환식으로 복구 |
http://blog.naver.com/PostView.nhn?blogId=foxmann&logNo=90095169727&categoryNo=0&parentCategoryNo=11&viewDate=¤tPage=1&postListTopCurrentPage=1&isAfterWrite=true
출처 ::
http://sdw8001.tistory.com/entry/Android-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EA%B0%9C%EB%85%90-CanvasBitmapDrawable
728x90
반응형
'안드로이드 이야기' 카테고리의 다른 글
안드로이드 - 종합 소스 창고 (0) | 2012.08.11 |
---|---|
안드로이드 - 위젯가이드 (0) | 2012.08.11 |
안드로이드 - drag & drop으로 아이템 이동시키는 GridView (0) | 2012.08.11 |
안드로이드 - 캘린더 소스코드 (0) | 2012.08.11 |
안드로이드 - Math 삼각함수 기본 (1) | 2012.08.11 |