2012-01-09 5 views
2

화면 캔버스의 첫 번째 문자열 옆에 두 번째 문자열을 그려야합니다. 두 번째 문자열의 시작점은 첫 번째 문자열의 너비가되어야합니다. 나는 paint.measuretext() Android의 메소드를 사용했습니다. 그러나 실제 너비보다 작은 너비를 반환합니다. 그래서 두 번째 String은 첫 번째 String과 중복됩니다. 어떤 몸이라도 정확한 문자열 폭을 얻는 방법을 설명 할 수 있습니까?DrawText 이상한 동작

testString1 = "44444444444444444444444444444444444444444"; 
testString2 = "Sample Test String"; 
canvas.drawText(testString1,0,50, paint); 
int textWidth = (int)paint.measureText(testString1); 
canvas.drawText(testString2,textWidth,50, paint); 
+0

어쩌면 글꼴을 어떻게 든 고려해야할까요? –

+0

기본 글꼴 – AndosBerry

+0

안녕하세요 Gangnus를 사용하고 있습니다. 동일한 종류의 문제가 있습니다. 해결책이 있으면 저를 도우십시오. – Raj

답변

0

measuretext()가 더 정확한 측정기입니다. 따라서 텍스트 자체 또는 글꼴 또는 글꼴 크기 등을 측정 및 그리기간에 변경했습니다.

기타 측정 방법은 here을 참조하십시오. 그러나 많은 것을 기다리지는 마십시오. 측정 도구는 좋은 측정 도구이며 실수는 거의 확실합니다.

새 편집 : string1 + string1에 대해 동일한 기능을 확인하십시오. 결과가 이전 버전의 2 배가 될 경우? 그렇다면 - 당신은 한 유닛에서 결과를 기다리고 있고, 다른 유닛에서 결과를 얻고 있음을 의미합니다. (측정 텍스트는 축소 된 픽셀에서 작동 함). 어쩌면 페인트 또는 캔버스는 x, y 및 텍스트 측정에 대해 서로 다른 측정 값을 사용합니다.

편집 2 : 에뮬레이터에서 잘못된 배율을 정의 할 수 있습니다. 다른 해상도/화면 크기를 사용해보십시오. 결과에 영향을주는 경우 화면 해상도 영향을 보상 할 수있는 Paint/Canvas 매개 변수를 찾아야합니다.

+0

measuretext가 잘못된 측정 값을 반환합니다. 문자열은 "4444444444444444444444444444444444444444444"입니다. – AndosBerry

+0

코드에 질문을 넣어 주시겠습니까? 우리는 장님이되는 오류를 어떻게 찾을 수 있습니까? – Gangnus

+0

testString1 = "44444444444444444444444444444444444444444"; testString2 = "샘플 테스트 문자열"; canvas.drawText (testString1,0,50, paint); int textWidth = (int) paint.measureText (testString1); canvas.drawText (testString1, textWidth, 50, paint); – AndosBerry