2012-01-29 124 views
4

讓我首先介紹一下我大部分都是編寫Java的新手,所以我很樂意提供完整的解釋。不只是一個代碼滲出,但東西,讓一些網站爲什麼和它應該是Android:在特定位置繪製位圖,拒絕繪製

我目前試圖編寫一個應用程序,我怎麼過我有一些麻煩與畫布和繪製我想要的位圖。這是我的代碼來繪製圖像:

Canvas canvas = null; 
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.image); 
canvas.drawBitmap(image, 10, 800, null); 

此方法(期望)會拋出一個空指針異常。但是,將「canvas」定義爲null是Eclipse給我的唯一選項。當試圖將其定義爲

Canvas canvas = new Canvas(); 

Android簡單地拒絕繪製位圖。我敢肯定,我的形象位於RES /繪製/圖像 如果有幫助,將圖像保存爲「image.png」

我怎麼會做在特定位置的Android顯示器/顯示我的圖像/位圖我要求它畫圖像(10x800)?

回答

4

編寫解決編譯器錯誤的廢話不會改變它是無稽之談! :)

您必須以另一種方式獲取對Canvas對象的引用。您可能想要更具體地瞭解您正在嘗試做什麼,以便我們可以建議您應該如何去做。 (出你嘗試只是一些其他視圖一起顯示的圖像你想創建一個自定義視圖您可能只是想考慮使用ImageView的?)

編輯:

你應該讀了關於developer.android.com上的Android架構。如果您只是試圖顯示圖像,則可能沒有理由直接使用畫布。然而,你可以通過擴展視圖類

class myView extends View{ 

    Bitmap bm; 

    loadBitmap() 
    { 
     bm = BitmapFactory.decodeResource(getResources(), R.drawable.image); 
    } 

    @Override 
    public void draw(Canvas c) 
    { 
     c.drawBitmap(bm, XCORD, YCORD, null); 
    } 
} 

自定義視圖中繪製如果您不需要自定義視圖,只需使用的ImageView類

class MyActivty extends Activity{ 
    @Override 
    public void onCreate(Bundle b) 
    { 
     super.onCreate(b); 
     ImageView iv = new ImageView(this); 
     iv.setImageResource(R.drawable.pic); 
     setContentView(iv); 
    } 
} 

警告:我寫的那些方法調用離開我的頭頂,他們可能會稍微偏離。

+0

我只是試圖讓Android來繪製一個位圖,在當前的視圖中,在10X800的線...代碼做這只是讚賞,或者只是給我什麼帆布必須被初始化,以防止NUllPointer,同時允許Android繪製和顯示位圖 – DeadChex 2012-01-29 15:31:25

+0

第一個soloutiton,在我的項目和一個新項目都導致Eclipse錯誤,「隱式超級構造函數View()未定義爲默認構造函數。必須定義一個顯式構造函數」on「 class CustomView擴展了View {'具體來說就是它的「CustomView」部分...添加'public CustomView(上下文上下文){super(context); \t \t \t \t // TODO自動生成構造函數存根 \t \t \t}」作爲sugessted通過Eclipse的,解決這個問題,Android的怎麼過不顯示圖像(是的,我叫c.drawBitmap)請幫幫忙,我會盡力第二個解決方案很快,併發回 – DeadChex 2012-01-29 22:16:10

+0

對不起,但從我可以告訴它,你似乎沒有閱讀Android的文檔。(更不用說,您甚至可以在嘗試編寫Android應用程序之前,通常需要學習更多關於編程的知識)。閱讀簡介並按照developer.android.com上的所有教程進行操作。 – you786 2012-01-29 22:28:56