Android
페인트
수색…
소개
페인트는 캔버스 (그리기 호출 유지), 비트 맵 (픽셀 유지) 및 그리기 프리미티브 (사각형, 패스, 비트 맵 ...)와 함께 그리는 데 필요한 네 가지 객체 중 하나입니다.
그림판 만들기
다음 3 가지 생성자 중 하나를 사용하여 새 페인트를 만들 수 있습니다.
-
new Paint()
기본 설정으로 만들기 -
new Paint(int flags)
플래그를 사용해 생성합니다. -
new Paint(Paint from)
다른 페인트의 설정 복사
성능 문제로 이어질 수 있으므로 일반적으로 페인트 객체 또는 onDraw ()의 다른 객체를 생성하지 않는 것이 좋습니다. (Android Studio에서 경고 할 것입니다.) 대신, 전역으로 만들고 클래스 생성자에서 다음과 같이 초기화하십시오.
public class CustomView extends View {
private Paint paint;
public CustomView(Context context) {
super(context);
paint = new Paint();
//...
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(0xFF000000);
// ...
}
}
텍스트 용 그림판 설정
텍스트 그리기 설정
-
setTypeface(Typeface typeface)
설정합니다. 서체 참조 -
setTextSize(int size)
글꼴 크기를 픽셀 단위로 설정합니다. -
setColor(int color)
텍스트의 색을 포함 해 페인트의 페인트의setColor(int color)
설정합니다. 또한setARGB(int a, int r, int g, int b
및setAlpha(int alpha)
-
setLetterSpacing(float size)
문자 간의 간격을 em 단위로 설정합니다. 기본값은 0이며, 음의 값은 텍스트를 강화하고 긍정적 인 값은 텍스트를 확장합니다. -
setTextAlign(Paint.Align align)
원점을 기준으로 텍스트 정렬을 설정합니다.Paint.Align.LEFT
는 원본을RIGHT
그릴 것이고,RIGHT
는 왼쪽으로 그릴 것이고,CENTER
는 원본을 중심으로 (수평으로) 그릴 것입니다. -
setTextSkewX(float skewX)
이것은 가짜 기울임 꼴로 간주 될 수 있습니다. SkewX는 텍스트 하단의 수평 오프셋을 나타냅니다. (기울임 꼴은 -0.25를 사용하십시오) -
setStyle(Paint.Style style)
텍스트FILL
, Stroke 텍스트STROKE
또는 둘 다FILL_AND_STROKE
SP 또는 DP에서 픽셀로 변환하려면 TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, size, getResources().getDisplayMetrics())
을 사용할 수 있습니다.
텍스트 측정
-
float width = paint.measureText(String text)
의 폭을 측정합니다. -
float height = paint.ascent()
텍스트의 높이를 측정합니다. -
paint.getTextBounds(String text, int start, int end, Rect bounds
텍스트 크기를 저장합니다. Rect를 할당paint.getTextBounds(String text, int start, int end, Rect bounds
null이 될 수 없습니다.
String text = "Hello world!";
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
측정에는 다른 방법이 있지만,이 세 가지가 대부분의 목적에 부합해야합니다.
셰이프 그리기를위한 그림판 설정
-
setStyle(Paint.Style style)
채워진 모양FILL
, Stroke shapeSTROKE
또는 둘 다FILL_AND_STROKE
-
setColor(int color)
페인트의 페인트의 색을 설정합니다. 또한setARGB(int a, int r, int g, int b
및setAlpha(int alpha)
-
setStrokeCap(Paint.Cap cap)
을 설정 라인 모자, 하나ROUND
,SQUARE
, 또는BUTT
(없음)을 참조하십시오 이 . -
setStrokeJoin(Paint.Join join)
행 결합을MITER
(pointy),ROUND
또는BEVEL
합니다. 이거 봐. -
setStrokeMiter(float miter)
마이 타 조인 한도를 설정합니다. 이렇게하면 마이 터 조인이 비 한정적으로 진행되는 것을 방지 할 수 있으므로 x 픽셀 후에 경사 결합으로 바뀝니다. 이거 봐. -
setStrokeWidth(float width)
스트로크의 폭을 설정합니다.0
은 캔버스 매트릭스와 독립적 인 헤어 라인 모드로 그립니다. (항상 1 픽셀)
플래그 설정
생성자 또는 setFlags(int flags)
사용하여 다음 플래그를 설정할 수 있습니다.
-
Paint.ANTI_ALIAS_FLAG
에일 리어Paint.ANTI_ALIAS_FLAG
, paint를 부드럽게합니다. -
Paint.DITHER_FLAG
. 색상 정밀도가 기기의 정밀도보다 높으면 이 문제가 발생 합니다. -
Paint.EMBEDDED_BITMAP_TEXT_FLAG
비트 맵 폰트의 사용을Paint.EMBEDDED_BITMAP_TEXT_FLAG
합니다. -
Paint.FAKE_BOLD_TEXT_FLAG
는 굵은 글꼴로 가짜 효과를 적용하여 텍스트를 그릴 수 있습니다. 일부 글꼴은 굵은 글꼴로, 굵은 글꼴은 그렇지 않습니다. -
Paint.FILTER_BITMAP_FLAG
의 비트 맵의 샘플링에 영향을줍니다. -
Paint.HINTING_OFF
,Paint.HINTING_ON
폰트 힌트를 표시 합니다. -
Paint.LINEAR_TEXT_FLAG
폰트의 슬캘링을Paint.LINEAR_TEXT_FLAG
합니다. draw 조작은 대신에 슬캘링됩니다. -
Paint.SUBPIXEL_TEXT_FLAG
텍스트는 서브 픽셀의 정확도를 사용해 계산됩니다. -
Paint.STRIKE_THRU_TEXT_FLAG
그려지는 텍스트가 스트라이크됩니다. -
Paint.UNDERLINE_TEXT_FLAG
그려진 텍스트에 밑줄이 그어집니다.
플래그를 추가하고 다음과 같은 플래그를 제거 할 수 있습니다.
Paint paint = new Paint();
paint.setFlags(paint.getFlags() | Paint.FLAG); // Add flag
paint.setFlags(paint.getFlags() & ~Paint.FLAG); // Remove flag
거기에없는 플래그를 제거하려고하거나 이미있는 플래그를 추가해도 아무 것도 변경되지 않습니다. 또한 대부분의 플래그는 set<Flag>(boolean enabled)
사용하여 set<Flag>(boolean enabled)
수 있습니다 set<Flag>(boolean enabled)
예 : setAntialias(true)
.
paint.reset()
을 사용하여 페인트를 기본 설정으로 재설정 할 수 있습니다. 유일한 기본 플래그는 EMBEDDED_BITMAP_TEXT_FLAG
입니다. new Paint(0)
를 사용하더라도 설정됩니다.