Android 학습 튜 토리 얼 의 2D 그래 픽 기초 및 태극 도 그리 기
8952 단어 android2d 그림 그리 기
Android 는 graphics 류 를 통 해 2D 도형 을 표시 합 니 다.그 중에서 graphics 에는 Canvas,Paint,Color,Bitmap 등 이 포함 되 어 있다.graphics 는 그리 기 점,선,색상,2D 기하학 적 도형,이미지 처리 등 기능 을 가지 고 있 습 니 다.그 중에서 Color 와 Bitmap 는 자주 사용 하 는 유형 으로 본 고 는 주로 Canvas 와 Paint 를 말한다.말 그대로 화포 와 화필 이다.
Canvas 류
Canvas 는 캔버스 입 니 다.우리 가 해 야 할 일 은 이전에 설 치 된 Paint 를 사용 하여 도형 을 그 리 는 것 입 니 다.시스템 은 Canvas 를 통 해 기본 적 인 그래 픽 API 를 제공 합 니 다.
1、
canvas.drawPoint(float x, float y, @NonNull Paint paint);
역할:점 그리 기.
매개 변수:점 의 x 좌표,y 좌표,화필 매개 변수 그리 기
2、
canvas.drawLine(float startX, float startY, float stopX, float stopY, @NonNull Paint paint);
역할:선 그리 기.파라미터:기점 의 x 좌표,기점 y 좌표,종점 x 좌표,종점 y 좌표,화필
3、
canvas.drawRect(@NonNull RectF rect, @NonNull Paint paint);
역할:사각형 그리 기.매개 변수:직사각형 매개 변수,화필 매개 변수
직사각형 매개 변수 구조 방법:다음 코드 는 직사각형 의 상하 좌우 좌표 이다.
public RectF(float left, float top, float right, float bottom) {}
4、
canvas.drawVertices();
역할:다각형 그리 기.
인자:
5、
canvas.drawArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean useCenter, @NonNull Paint paint);
역할:포물선 을 그립 니 다.매개 변수:왼쪽 끝,상단,오른쪽 끝,아래쪽,시작 각도,스 캔 한 각도,원호 의 두 단락 이 원심 과 연결 되 는 지,화필 파라미터
6、
canvas.drawCircle(float cx, float cy, float radius, @NonNull Paint paint);
역할:원 그리 기.파라미터:원심 x 좌표,원심 y 좌표,반경,화필 파라미터
7、
canvas.drawText();
역할:텍스트 그리 기
매개 변수:문자 왼쪽 아래 x 좌표,문자 왼쪽 아래 y 좌표,
8、
canvas.drawOval(float left, float top, float right, float bottom, @NonNull Paint paint);
역할:타원 그리 기
파라미터:왼쪽,상단,오른쪽,하단,화필 파라미터
9、
canvas.drawRoundRect(float left, float top, float right, float bottom, float rx, float ry,@NonNull Paint paint);
역할:원 각 사각형 그리 기
파라미터:왼쪽,상단,오른쪽,하단,x 축 상의 원 각 반지름,y 축 상의 원 각 반지름,화필 파라미터
시스템 화필 도구 가 제공 하 는 API:
1、
mPaint.setAntiAlias();
역 톱날 설정인자:true,false
2、
mPaint.setColor();
화필 색 설정인자:색상 값
3、
mPaint.setARGB();
펜 을 설치 한 A,R,G,B인자:A,R,G,B
4、
mPaint.setAlpha();
화필 의 투명 도 를 설정 하 다매개 변수:수치 범 위 는 0-255 사이 입 니 다.
5、
mPaint.setTextSize();
그림%1 개의 캡 션 을 편 집 했 습 니 다.인자:0 이상 이 어야 합 니 다.
6、
mPaint.setStyle();
붓 스타일 설정(채 우기 및 묘사)파라미터:Paint.Style.FILL(충전),Paint.Style.STROKE(묘사),Paint.Style.FILLAND_STROKE(테두리 채 우기 및 그리 기)
7、
mPaint.setStrokeWidth();
그림%1 개의 캡 션 을 편 집 했 습 니 다.파라미터:부동 소수점 형
페인트 류
일상적인 그림 과 마찬가지 로 그림 을 그 리 려 면 먼저 적당 한 붓 을 선택해 야 한다.그러면 안 드 로 이 드 에서 그림 을 그 릴 때 먼저 붓 을 조정 하고 자신의 필요 에 따라 붓 의 관련 속성 을 설정 해 야 합 니 다.시스템 이 저 에 게 제공 하 는 자주 사용 하 는 API 는 다음 과 같 습 니 다.
먼저 태극 도 를 본다.
지금부터 한 걸음 한 걸음 그 를 그 려 야 한다.우 리 는 그림 의 개념 을 참고 할 수 있다.먼저 맨 밑 에 있 는 그림 을 그립 니 다.왼쪽,오른쪽 양쪽 에 각각 흰색 과 검은색 을 설정 합 니 다.
그림 에서(x,y)는 원심 좌표 이다.여기 내 가 설정 한 x=getWidth()/2;y=getHeight() / 2;반지름 r=getHeight()/2;
이제 코드 를 살 펴 보 겠 습 니 다.View 를 정의 하 는
OnDraw(Canvas canvas)
방법 에서:
//
mPaint.setColor(Color.BLACK);//
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);// style
RectF rect= new RectF(getWidth() / 2 - getHeight() / 2,
0, getWidth() / 2 + getHeight() / 2, getHeight());//
canvas.drawArc(rect, 270, 180, false, mPaint);
mPaint.setColor(Color.WHITE);//
canvas.drawArc(rect, 90, 180, false, mPaint);
코드 에서 rect 즉 원 의 외 접 사각형 으로 그 구조 함수RectF(float left, float top, float right, float bottom)
의 네 개의 매개 변 수 는 각각 사각형 의 가장 왼쪽 에 있 는 x 좌표 값 에 대응 합 니 다.왼쪽 위의 y 좌표 값;맨 오른쪽 x 좌표 값;맨 아래 y 좌표 값.코드 중:
left=getWidth() / 2 - getHeight() / 2;
top=0;
right=getWidth() / 2 + getHeight() / 2;
bottom=getHeight();
네 개의 값 이 원 의 외 접 사각형 을 확정 하 였 다.canvas.drawArc(rect, 90, 180, false, mPaint);
첫 번 째 매개 변 수 는 바로 우리 가 위 에서 정 한 구역 이다.두 번 째 매개 변 수 는 그리 기 시작 한 각도(90 도,x 축 방향 은 시계 방향 으로 회전)이 고 세 번 째 매개 변 수 는 스 캔 한 도수 이 며 네 번 째 매개 변 수 는 설 정 된 붓 Paint 이다.그 다음 에 우 리 는 중간 그림 을 그 리 는 데 착수 해 야 한다.중간 그림 층 은 두 개의 상하 외 에 자 른 반원 이 라 고 볼 수 있다.위 에 흰색 오른쪽 반원,아래 에 검은색 왼쪽 반원 이다.
마찬가지 로 우 리 는 먼저 외 접 사각형 의 구역 을 확정 한 다음 에 원 호 를 그 리 는 데 더 이상 상세 하 게 설명 하지 않 을 것 이다.
//
mPaint.setColor(Color.BLACK);
rect= new RectF(getWidth()/2-getHeight()/4,0,getWidth() / 2 + getHeight() / 4, getHeight() /2);
canvas.drawArc(rect, 90, 180, false, mPaint);
//
mPaint.setColor(Color.WHITE);
rect= new RectF(getWidth()/2-getHeight() / 4, getHeight() / 2, getWidth() / 2 + getHeight() / 4, getHeight());
canvas.drawArc(rect, 270, 180, false, mPaint);
마지막 으로 맨 위 그림 층 상하 두 개의 작은 원
//
mPaint.setColor(Color.WHITE);
canvas.drawCircle(getWidth() / 2, getHeight() / 4, getHeight() / 10, mPaint);
//
mPaint.setColor(Color.BLACK);
mPaint.setStyle(Paint.Style.FILL);
canvas.drawCircle(getWidth() / 2, getHeight() * 3 / 4, getHeight() / 10, mPaint);
canvas.draw Circle 은 원 을 그 리 는 데 사 용 됩 니 다.첫 번 째 매개 변 수 는 원심 x 좌표 값 이 고 두 번 째 매개 변 수 는 y 좌표 값 입 니 다.세 번 째 좌 표 는 원 의 반지름 이 고 네 번 째 는 설 치 된 붓 입 니 다.여기까지 태극 도 를 그 렸 다.
사용자 정의 View 코드 를 첨부 합 니 다:
package com.chuck.mobile.changecountview.widget;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
/**
* :changecountview
* :
* :Administrator
* :2015/12/11 16:37
* :Administrator
* :2015/12/11 16:37
* :
*/
public class CustomeView extends View{
private Paint mPaint=new Paint();
private Path path=new Path();
private float degress=90;
public CustomeView(Context context) {
super(context);
}
public CustomeView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomeView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
//
mPaint.setColor(Color.BLACK);//
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);// style
RectF rect= new RectF(getWidth() / 2 - getHeight() / 2,
0, getWidth() / 2 + getHeight() / 2, getHeight());//
canvas.drawArc(rect, 270, 180, false, mPaint);
mPaint.setColor(Color.WHITE);//
canvas.drawArc(rect, 90, 180, false, mPaint);
//
mPaint.setColor(Color.BLACK);
rect= new RectF(getWidth()/2-getHeight()/4,0,getWidth() / 2 + getHeight() / 4, getHeight() /2);
canvas.drawArc(rect, 90, 180, false, mPaint);
//
mPaint.setColor(Color.WHITE);
rect= new RectF(getWidth()/2-getHeight() / 4, getHeight() / 2, getWidth() / 2 + getHeight() / 4, getHeight());
canvas.drawArc(rect, 270, 180, false, mPaint);
//
mPaint.setColor(Color.WHITE);
canvas.drawCircle(getWidth() / 2, getHeight() / 4, getHeight() / 10, mPaint);
//
mPaint.setColor(Color.BLACK);
mPaint.setStyle(Paint.Style.FILL);
canvas.drawCircle(getWidth() / 2, getHeight() * 3 / 4, getHeight() / 10, mPaint);
}
}
그리고 레이아웃 파일 에 사용자 정의 View 를 사용 합 니 다.
<com.chuck.mobile.changecountview.widget.CustomeView
android:layout_width="match_parent"
android:layout_height="250dp"
android:background="@color/gray"/>
만약 에 이 태극 도 를 돌 리 려 면 방법 이 많 고 애니메이션 을 사용 할 수도 있 고 캔버스 를 회전 시 키 는 방식 으로 이 루어 질 수도 있다.나 는 스스로 스 레 드 를 통 해 캔버스 를 회전 시 키 는 방법 을 사용 했다.Android 2D 그래 픽 기법 을 익히 면 관심 있 는 그림 을 그 릴 수 있 습 니 다.총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 안 드 로 이 드 개발 자 들 에 게 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.