6
我正在創建一個應用程序,可以在用戶控件下執行繪圖等操作,讓我們保存它。我試圖做到這一點的方式是使用畫布繪製的自定義位圖,然後保存生成的位圖。Canvas.setBitmap UnsupportedException(位圖)
一切都按預期工作,直到調用Canvas.setBitmap(Bitmap)。
我收到以下錯誤消息。這是拋出異常
03-24 13:47:50.741: E/AndroidRuntime(27888): FATAL EXCEPTION: main
03-24 13:47:50.741: E/AndroidRuntime(27888): Process: example.imageeditor, PID: 27888
03-24 13:47:50.741: E/AndroidRuntime(27888): java.lang.UnsupportedOperationException
03-24 13:47:50.741: E/AndroidRuntime(27888): at android.view.HardwareCanvas.setBitmap(HardwareCanvas.java:39)
代碼:
protected void onDraw(Canvas canvas) {
mResultImage=Bitmap.createBitmap(width,height,mOriginalImage.getConfig());
canvas.setBitmap(mResultImage);
canvas.save();
if(mOriginalImage!=null)
canvas.drawBitmap(mOriginalImage, width, height, paint);
else
canvas.drawText("Image loading...", width/2f-20, height/2, paint);
canvas.drawText(text, x, y-20, paint);
canvas.restore();
super.onDraw(canvas);
}
的android.view.HardwareCanvas甚至沒有在Android上的參考。但是我能夠找到關於它的一些信息。 看來它的setBitmap(Bitmap)還沒有被寫入,沒關係。
我的問題是爲什麼onDraw(Canvas)返回一個HardwareCanvas類?它甚至不是Canvas的超級類。
紅利問題:任何方式?
那麼這回答我的獎金問題。但是,如果我們不應該使用它,爲什麼我們有這種方法呢?此外,它不會被廢棄,也不會在參考文獻中有任何警告。 無論如何,謝謝你的答案。 – torque203
如果您嘗試修改自己創建的畫布,該方法應該完全可以。嘗試想象你在那裏想要做什麼。您具有視圖的畫布,這是您的視圖用於在屏幕上呈現自己的畫布,並且您正試圖使該畫布在位圖上繪製。這將打破應該在同一個畫布上繪製的所有其他視圖。很清楚,它不能正常工作? –
在閱讀文檔並確定setBitmap設置了Canvas的內部繪圖緩衝區之後,我也遇到了UnsupportedOperationException,您可以使用它。事實並非如此,您必須創建一個額外的Canvas,但文檔中沒有足夠的警告。 – comodoro