2013-01-06 90 views
8

我在擴展表面視圖並實現可運行的類中擁有此代碼 我能夠使用該類基本上允許您使用不同的顏色等繪製到畫布。我試圖找到一種方法,可以讓我在繪製圖像後保存圖像,這是方法。不管我做什麼,我只是得到一個沒有任何東西的黑色圖像。有任何想法嗎?從自定義SurfaceView獲取位圖

我有緩存繪製有效

目的從自定義SurfaceView我已經用盡的看着這裏上一些其他的選項後,並沒有發現任何工作得到位圖圖像。希望最近有一個新的解決方案。非常感謝

public Bitmap getImage() { 
      Bitmap bitmap = Bitmap.createBitmap(this.getWidth(), 
        this.getHeight(), Bitmap.Config.ARGB_8888); 
      Canvas canvas = new Canvas(bitmap); 
      this.draw(canvas); 
      return bitmap; 
     } 
+0

你有什麼期望'this.getWidth()'和'this.getHeight()'給? –

+0

您正在創建一個新的位圖,它沒有任何內容。然後,您從該空白位圖創建一個畫布。你還沒有做任何繪畫,你怎麼能期待一個繪畫?請注意:如果您重寫SurfaceView的onDraw()方法,請確保在您的類構造函數中調用'setWillNotDraw(false)'。 –

+0

我預計會得到表面寬度和高度,因爲這是我正在擴展的類。 –

回答

1

你的問題的,只有你最後的評論變得清晰起來。在上面張貼的代碼中,您將以return bitmap返回。這將返回本地變量bitmap。這個局部變量是完全空白的。您可能正在繪製位圖或將圖像關聯到代碼中的其他位置。但是在上面的代碼中,位圖的實例是空白的,僅對於該函數是本地的。你不能指望它返回你的更新,最新的位圖。現在

,您的評論後,我用Google搜索「獲取當前surfaceview的位圖」,它使我這個蘇答案:Create Bitmap from SurfaceView

在這個問題,這顯然是通過擴展視圖,而不是SurfaceView解決。繪圖緩存僅適用於View。

更新:請按照以下教程進行操作。根據您粘貼的代碼,不清楚錯誤是什麼。繪製到SurfaceView需要做很多事情,我不確定你是否已經完成了這些工作,而且我不能要求每一個這樣的缺失項目。我遵循以下教程爲我的基本圖形項目。你需要閱讀它們,看看你是否錯過了任何東西。

教程上繪圖畫布:

Playing with Graphics in android各地。

Android 2D

+0

必須有一種方法。我見過其他人成功使用它。只是不是編碼。在它不起作用之前,我使用了一個視圖,因爲它的表現並不快。我現在試圖做的是製作一個字段圖像和畫布。然後我把圖像放到畫布上,當我打電話給我時,我只是發送畫布而不是他們想要的畫布。仍然沒有工作......任何想法什麼繪製到surfaceView和它被調用。所以我可以插入我的畫布而不是它使用的畫布。 –

+0

爲了不讓SurfaceView本身繪製到畫布上,讓你自己的'onDraw()'完成任務,從類的構造函數中調用'setWillNotDraw(false)'。 –

+0

謝謝你,我已經包括它。嘆息仍然無法從中獲得圖像。我在onDraw中有一個日誌,並且我只在第一次打開應用程序時看到它被調用。當我繪製到表面視圖時不會調用它?什麼時候它被稱爲什麼? –

相關問題