2017-01-21 5 views
2

PaintTextPaint의 차이점은 무엇입니까? TextPaint 캔버스에 텍스트를 그릴 수 있습니까? Android에서 Paint와 TextPaint의 차이점은 무엇입니까?

는 최근 캔버스에 텍스트를 그리는 방법을 연구하고있다 그리고 그것은 나에게 TextPaint을했다. 그러나, the source code를 읽는 동안 나는 전혀 TextPaint에 전혀 없다는 것을 알고 놀랐다. 실제로 캔버스에 텍스트를 그리는 데 실제로 필요하지는 않습니다. 그래서이 Q & A를 추가하여보다 명확하게 만듭니다.

답변

6

TextPaintPaint의 서브 클래스입니다. 그러나이 이름에서 추측 할 수있는 것과는 달리, 캔버스에 텍스트를 그리는 무거운 작업은 Paint에 의해 수행됩니다. 따라서,이

TextPaint textPaint = new TextPaint(); 
textPaint.setTextSize(50); 
canvas.drawText("some text", 10, 100, textPaint); 

Paint paint = new Paint(); 
paint.setTextSize(50); 
canvas.drawText("some text", 10, 100, paint); 

실제로 같은 일을. TextPaintPaint 주위의 가벼운 포장지 일 뿐이며, 안드로이드에 텍스트를 그리거나 측정 할 때 사용할 수있는 숫자는 extra data입니다. TextLine class source code (이 클래스는 텍스트 줄을 그립니다)을 읽으면 실제 상황을 볼 수 있습니다. 이것은 StaticLayout과 같은 것을 만들 때 TextPaint을 전달해야하고 Paint을 전달하지 않아야하는 이유입니다.

TextPaint 필드

문서는 약간 풀러 설명 무엇인지 "추가 데이터는"여기에 꽤 스파 스입니다. (Disclamer은 :. TextPaint이 값을 변경하여, 사실은 그래서 소금 곡식이 부분을 텍스트가 내 테스트에서 그려진 방법의 변경에 영향을 미칠 수 없었다.)

  • baselineShift - 기준선은 텍스트의 기준선입니다. 이미지는 this answer을 참조하십시오. baselineShift을 변경하면 기준선이 위 또는 아래로 이동하므로 텍스트가 한 줄에 얼마나 많이 그려지는 지에 영향을줍니다.
  • bgColor -이 텍스트 뒤의 배경 색상입니다.
  • density는 -이 화면의 밀도하지만이 모든 소스 코드에 사용되는 찾을 수 없습니다 가정합니다.
  • drawableState - 나는 날이 그들이 다시 그려야 할 때 개체를 알려하는 데 사용됩니다 생각하게하는 PFLAG_DRAWABLE_STATE_DIRTY 플래그를 제외하고 소스 코드에서 많이 찾을 수 없습니다.
  • linkColor - 나는 단지이 그것을 말하는 것을 의미 가정 링크의 텍스트 색상 수 있습니다. 그러나, 나는 어떤 소스 코드에서 사용되는 것을 발견 할 수 없었다.

참고TextPaint source code

  • Paint source code
    • 메모를 남기거나 당신이 더 이상 정보가있는 경우이 대답을 업데이트하시기 바랍니다.