반응형
Canvas 를 이용해서 화면에 이미지 확대, 축소, 변경하기 개발환경 : JDK 1.5, eclipse-galileo, android API 2.1, window XP
이전에는 Bitmap 클래스로 이미지 확대 축소 변경등을 하여 화면에 표현하였다. 이제 Canvas
에서 이미지를 표현할떄 확대,축소,변경하는 법을 알아본다. 여기 소스는 Canvas 클래스의
drawBitmap 함수를 사용하여 이미지의 특정영역을 복사해서 그것을 다시 축소해 그려넣었다.
영역의 복사위치는 Rect 클래스를 사용하였다. 4개의 생성자 파라미터는 순서대로 x좌표, y좌표,
영영의 넓이, 영역의 높이 값에 해당한다.
Rect src 는 화면에서 이미지를 복사한 영역인데 canvas.drawBitmap(image, 0, 0, null);
에서 그린 영역에 해당하며 Rect dst 는 복사한 것을 화면에 나타낼 곳을 지정하는 것이다.
아래 캡쳐화면과 같이 원본그림을 반으로 줄인것이다.
전체소스는 다음과 같다
import android.app.Activity; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Rect; import android.os.Bundle; import android.view.View; import android.view.Window; public class CanvasView extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(new ImageView(this)); } public class ImageView extends View{ private Bitmap image; // 이미지 public ImageView(Context context) { super(context); setBackgroundColor(Color.WHITE); // 그림 읽어들이기 Resources r = context.getResources(); image = BitmapFactory.decodeResource(r, R.drawable.excavator); } @Override protected void onDraw(Canvas canvas) { // 원본이미지 canvas.drawBitmap(image, 0, 0, null); // 원본이미지 영역을 축소해서 그리기 int w = image.getWidth(); int h = image.getHeight(); Rect src = new Rect(0, 0, w, h); Rect dst = new Rect(0, 200, w / 2, 200 + h / 2); canvas.drawBitmap(image, src, dst, null); super.onDraw(canvas); } } }
반응형
'안드로이드 개발' 카테고리의 다른 글
안드로이드(android) 데이타베이스(DB) sqlite3 다루기 (1) (2) | 2010.08.15 |
---|---|
안드로이드(android) 탭(TabActivity) 3가지 구현하기 (33) | 2010.08.13 |
Android(안드로이드) 에서 탭을 구현할 때 탭별 색상변경과 아이콘 넣어 디자인 하기 (5) | 2010.08.13 |
안드로이드(Android) SurfaceView 를 이용하여 터치로 이미지 이동시키기 (22) | 2010.08.13 |
안드로이드 디자인 색상표 ARGB 값을 알아볼수 있는 플래쉬 파일 (0) | 2010.08.09 |
안드로이드 Intent 를 사용하여 이미지,영상,전화번호부등 가져오기 (1) (7) | 2010.08.07 |
안드로이드에서 단위테스트를 위한 Junit 사용하기 (1) (5) | 2010.08.07 |
안드로이드에서 단위테스트를 위한 Junit 사용하기 (2) (0) | 2010.08.07 |