CODEDRAGON ㆍDevelopment/Android
그래픽 주요 클래스
속성 | 설명 |
Canvas | 뷰의 표면에 직접 그릴 수 있도록 만들어 주는 객체로 그래픽 그리기를 위한 메서드가 정의되어 있습니다. |
Paint | 그래픽 그리기를 위해 필요한 색상 등의 속성을 담고 있습니다. |
Bitmap | 픽셀로 구성된 이미지로 메모리 상에 그래픽을 그리는 데 사용됩니다. |
Drawable | 사각형, 이미지 등의 그래픽 요소가 객체로 정의되어 있습니다. |
그리기 관련 주요 메서드
속성 | 설명 |
점 그리기 | void drawPoint(float x, float y, Paint paint) 하나의 점을 그림. drawPoints()를 이용하면 여러 개의 점을 그릴 수 있습니다. |
선 그리기 | void drawLine(float startX, float startY, float stopX, floatY, Paint paint) 두 점의 x, y 좌표값을 이용해 선을 그립니다. drawLines()를 이용하면 여러 개의 선을 그릴 수 있습니다. |
사각형 그리기 | void drawRect(float left, float top, float right, float bottom, Paint paint) 모서리의 자표값을 이용해 사각형을 그립니다. |
둥근 모서리의 사각형 그리기 | void drawRoundRect(RectF rect, float rx, float ry, Paint paint) 사각 영역과 모서리 부분 타원의 반지름 값을 이용해 둥근 모서리의 사각형을 그립니다. |
원 그리기 | void drawCircle(float cx, float cy, float radius, Paint paint) 원의 중앙 좌표값과 반지름을 이용해 원을 그립니다. |
타원 그리기 | void drawOval(RectF oval, Paint paint) 사각 영역을 이용해 타원을 그립니다 |
아크 그리기 | void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) 사각 영역과 각도를 이용해 아크를 그립니다 |
패스 그리기 | void drawPath(Path path, Paint paint) 패스 정보를 이용해 연결선 또는 부드러운 곡선을 그립니다 |
비트맵 그리기 | void drawBitmap(Bitmap bitmap, float left, float top, Paint paint) 비트맵 이미지를 주어진 좌표값에 그립니다 |
그래픽 그리기 단계
1 | 새로운 클래스 생성 후 View를 상속 |
2 | Context객체 하나를 파라미터로 가지는 생성자 정의 |
3 | 그리기 객체 초기화 및 필요한 속성 설정 |
4 | onDraw()메소드 내에서 그리기 객체 호출 |
5 | onTouch()메소드 내에서 터치 이벤트 처리 |
6 | 새로 만든 View클래스를 메인 액티비티에 추가 |
XML레이아웃에 새로 생성한 View를 element로 직접 지정 시
XML레이아웃에 새로 생성한 View를 element로 직접 지정 시 반드시 아래 생성자를 정의해 주어야 합니다.
//XML에 element로 지정시 반드시 아래 생성자 정의 public MyView(Context context, AttributeSet attributeSet){ super(context, attributeSet); } |
메인 액티비티에 추가할 때 소스 코드
new연산자를 통해 객체를 생성한 후 setContentView()메소드로 화면 전체에 보여줍니다.
MyView myView = new MyView(this); setContentView(myView); |
그리기 메소드
onDraw() | 뷰가 화면에 디스플레이될 때 자동으로 호출됩니다. |
onTouch() | 터치 이벤트를 처리합니다. |
Canvas 와 Paint 다루기
Canvas | Canvas(android.graphics.Canvas)는 직사각형 영역에 뭔가를 그리는 수단들을 제공합니다. |
Paint | Paint 클래스는 스타일과 복합 색 및 렌더링 정보를 캡슐화합니다. |
설정 | 메소드 |
색상 설정 | setColor(Color.RED) |
안티앨리어싱 설정 | New Paint(Paint.ANTI_ALIAS_FLAG) |
스타일 설정 | setStyle(Paint.Style.STROKE) 외곽선만 나타나고 색이 채워지지 않음 |
그래디언트 설정 | setShader() |
도형 그리기
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyCanvas(this)); } private class MyCanvas extends View{
public MyCanvas(Context context) { super(context); } protected void onDraw(Canvas canvas){ canvas.drawColor(Color.WHITE); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.BLUE);
//원 canvas.drawCircle(100,100,50,paint);
paint.setColor(Color.YELLOW); //사각형 canvas.drawRect(200, 200, 300, 300, paint); } } |
비트맵 이미지 처리
비트맵 이미지 그리기
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon); canvas.drawBitmap(bitmap, 0, 0, null); |
비트맵 이미지 크기 조정하기
bitmap2=Bitmap.createScaledBitmap(bitmap,100,80,false); canvas.drawBitmap(bitmap2, 0,300, null); |
비트맵 이미지가 사용한 메모리 해지하기
bitmap.recycle(); bitmap2.recycle(); |
SDCard에서 비트맵 이미지 읽기
File file=new File(Environment.getExternalStorageDirectory(),fileName); FileInputStream fis=null; try{ fis=new FileInputStream(file); }catch(FileNotFoundException e){} Log.d("error",String.format("[%s] is not found",fileName)); return; |
'Development > Android' 카테고리의 다른 글
PaintDemo-그리기 객체 사용 (0) | 2014.07.10 |
---|---|
FileSearchByGallery-SD카드의 이미지 출력 (0) | 2014.07.10 |
SQLite Manager, FireFox 브라우저 설치 (0) | 2014.07.09 |
SQLite-DataBase 파일 생성 확인 (0) | 2014.07.09 |
SQLiteDemo-SQLite에서 각종 쿼리 수행(CRUD) (0) | 2014.07.09 |