2010/05/06

[Android Dev.] 2D Drawing

Android 의 2D 드로잉은 Canvas 객체를 이용하여 하는데 Canvas 의 사용에 있어 중요한 객체가 Paint 객체인데 이 Paint 객체에는 드로잉에 필요한 각종 설정을 담고 있다.



위의 이미지를 출력하기위한 코드이다.

public class My2D 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 My2DView( this ) );
//setContentView(R.layout.main);
}

class My2DView extends View
{
public My2DView(Context context)
{
super(context);
}

@Override
public void onDraw(Canvas canvas)
{
// Canvas 배경 설정
canvas.drawColor(Color.parseColor("#030303"));

// Bitmap 을 Canvas 에 뿌리기
Bitmap bm = BitmapFactory.decodeResource(
getResources(), R.drawable.icon);
canvas.drawBitmap(bm, 100, 100, null);

// 드로잉을 위핸 Paint 객체 생성
Paint myPaint = new Paint();
myPaint.setAntiAlias( true ); // AntiAliasing 설정

// 선 그리기
myPaint.setColor( Color.parseColor("#FF0000") ); // 선 색상 설정
canvas.drawLine( 10, 10, 100, 100, myPaint );

// 도형 그리기
myPaint.setARGB( 128, 0, 255, 255 ); // 색상 설정
canvas.drawCircle( 200, 300, 100, myPaint ); // 원 그리기
myPaint.setARGB( 128, 255, 0, 255 ); // 색상 설정
canvas.drawCircle( 100, 250, 100, myPaint ); // 원 그리기

myPaint.setARGB( 128, 255, 0, 0 ); // 색상 설정
// 10x10 크기의 모서리가 둥근 사각형 그리기
canvas.drawRoundRect(
new RectF(150.0f, 60.0f, 300.0f, 160.0f),
10.0f, 10.0f, myPaint );

Path myPath = new Path(); // 패스 생성
// 패스에 시계방향 원형 추가
myPath.addCircle( 200, 300, 100, Direction.CW );
myPaint.setARGB( 128, 0, 255, 255 ); // 색상 설정
myPaint.setTextSize( 15 ); // 폰트 크기 설정
// 패스를 따라 5pixel 떨어진 글자 출력
canvas.drawTextOnPath(
"Hello Android 2D",
myPath, 0.0f, -5.0f, myPaint );

// 문자 출력
myPaint.setColor( Color.CYAN ); // 색상 설정
canvas.drawText( "Android drawText", 20, 20, myPaint );

myPaint.setARGB( 0, 255, 0, 255 );
float[] pos = new float[] { 60, 50, 60, 420 };
//canvas.drawPosText( "Android drawPosText", pos, myPaint );
}
}
}





다른 것은 어렵지 않게 되는데 맨 마지막 시도한 drawPosText 는 잘 되지 않는데 이 함수만 실행하면 프로그램이 다운되어 버린다. 관련 자료를 찾고 있는데 쉽지가 않다.<

Original Post : http://neodreamer-dev.tistory.com/431

No comments :

Post a Comment