Please Enable JavaScript!
Gon[ Enable JavaScript ]

Canvas 를 이용해서 화면에 이미지 확대, 축소, 변경하기

안드로이드 개발
반응형

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);
		}
    }
}
반응형
Posted by 녹두장군1
,