2012-11-01 6 views
1

이미지에 텍스트를 그리는 코드를 작성했습니다. potrait 모드로 이미지를 캡처하지만 풍경 모드에서 이미지를 캡처 할 때 응용 프로그램이 충돌 할 때 Java.lang 예외가 발생합니다. .IllegalStateException : 캔버스 생성자캔버스에 그림을 그리려면

Canvas canvas = new Canvas(photo); 
        Typeface tf = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD); 
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
        paint.setStyle(Style.FILL); 
        paint.setTypeface(tf); 
        paint.setColor(Color.WHITE); 
        paint.setStrokeWidth(12); 
        canvas.drawBitmap(photo, 0, 0, paint); 
        canvas.drawText(topaste, 10, 115, paint); 
        image.setImageBitmap(photo); 

답변

1

에 전달 불변의 비트 맵은 기본적으로 캔버스 객체는 불변의 이미지에서 나중에 그리기 작업의 포인트를 패배 전달에 그릴 신선한 비트 맵을 필요로한다. 다음 코드는 캔버스에 대한 새 비트 맵을 만듭니다. 귀하의 유스 케이스에 맞게 너비 및 높이 변수를 바꿔야합니다.

Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) 
Canvas canvas = new Canvas(photo); 
+0

왜 이것이 단지 풍경에서만 발생하는지에 대한 설명이 있습니까? – aaronmarino

관련 문제