2017-03-07 3 views
0

이미지에 맞지 않는 긴 문자열이 있습니다. 그래서 나는 Canvas을 사용하여 Bitmap에 라인을 계산 한 다음 줄 단위로 글을 썼습니다. 문제는 첫 번째 줄만 작성된다는 것입니다. 나는 항상이 하나의 이미지에 글을 쓸 것이다. 각 행의 길이는 40 자로 고정됩니다. 당신은 mQuotelength가 사용캔버스에 루프로 텍스트 그리기

private Bitmap prepareImageWithText(String text){ 
     Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.text_image); // Load your bitmap here 
     Bitmap aBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); // copy the bitmap because the one from the Resources is immutable. 
     Canvas canvas = new Canvas(aBitmap); 
     Paint paint = new Paint(); 
     paint.setColor(Color.BLACK); 
     paint.setTextSize(75); 

     for(int i=0; i<calculateLines(text); i++) { 
      int beginFrom = i*40; 
      int endAt = beginFrom + 40; 
      if(endAt > text.length()){ 
       endAt = text.length()-1; 
      } 
      String writableArea = text.substring(beginFrom, endAt); 
      canvas.drawText(writableArea, 100, 300+(i*100), paint); 
      canvas.save(); 
     } 
     return aBitmap; 
    } 

    private int calculateLines(String text){ 
     if(!TextUtils.isEmpty(text)){ 
      int lines = text.length()/40; 
      return lines; 
     } 
     return 1; 
    } 
+0

간단히 'android.text.Layout'을 사용하십시오. – pskink

+0

@pskink 설명 할 수 있습니까? – Ichthyocentaurs

+0

'Canvas'에 looong 텍스트를 그릴 때 사용합니다.''행을 계산할 필요가없고,''Line''을 한 줄씩 쓰는 대신''Layout' 인스턴스를 만들고'Canvas'에'draw'합니다. – pskink

답변

1

당신은 calculateLines-quote을 통과하고 비어 있지 않은 경우에만 무엇을하고, 아직 : 아래의 코드를 확인하시기 바랍니다. 나는이 혼란이 당신 문제의 원인이라고 생각합니다. 전달하려는 값이 전달하고자하는 값인지 확인하고 mQuotelength 대신 이 quote 인 계산에 사용해야합니다.

+0

mQuote와 quote는 같습니다. 형식 오류. – Ichthyocentaurs

+0

@Ichthyocentaurs 견적은 무엇입니까? 어떻게 초기화됩니까, 메서드가 호출 될 때 그 값은 무엇입니까? –

+0

prepareImageWithText (문자열 텍스트), 텍스트를 입력으로받습니다. calculateLines()에 대한 호출은 이것을 입력으로받습니다. – Ichthyocentaurs

2
for(int i=0; i<calculateLines(quote); i++) { 

if(endAt > text.length()){ 

이 두 줄

당신의주의가 필요합니다. "text"와 "quote"는 같은 문자열인가?

+0

그들은 똑같은 형식 오류입니다. 나는 지금 이것을 고쳤다 고 생각한다. – Ichthyocentaurs

+0

@Ichthyocentaurs는 서식 오류가 아닙니다. 문제를 설명 할 필요가 있습니다. 그렇지 않으면 우리 부분에서 당신을 도우려고 시도하는 것이 현명하지 않습니다. –

+0

정말 혼란 스럽습니다. 저는 변수 이름을 모두 수정했습니다. 그러나 실제 문제는 루프의 반복 횟수 계산이 잘못되었습니다. – Ichthyocentaurs