2011-11-15 5 views
1

私は画面にいくつかのテクスチャを表示するためにキャンバスを使用しています、私はscreen.The私は直面している唯一の問題は、それがデバイスに来るときエミュレータではなく、テクスチャは、これはあなたが私に言うresolution.canどのように私はこの問題にどのように私はキャンバスのビットマップを適切にアンドロイドのすべての画面解像度で描画することができます

を解決することができますどのように画面の違いによるもので、ここでは、画面

にテクスチャを配置するための私のコードで散乱されています
    Bitmap bitmap = BitmapFactory.decodeResource(mcontext.getResources(), R.drawable.dial); 
        canvas.drawBitmap(bitmap, canvas.getWidth()/10, canvas.getHeight()/4, null); 


        Bitmap bitmap1 = BitmapFactory.decodeResource(mcontext.getResources(), R.drawable.browser); 
        //canvas.drawBitmap(bitmap1, bitmap.getWidth()/4 ,canvas.getHeight()/2, null); 
        canvas.drawBitmap(bitmap1, canvas.getWidth()/5 ,canvas.getHeight()/2, null); 


        Bitmap bitmap2 = BitmapFactory.decodeResource(mcontext.getResources(), R.drawable.camera); 
        canvas.drawBitmap(bitmap2, canvas.getWidth()/10 + bitmap.getWidth()/6,canvas.getHeight()/3, null); 

答えて

2

基本的にキャンバスを変換して、予測可能な座標系で作業する必要があります。あなたは座標系に慣れていない場合、あなたはおそらくその上に読みたいと思うでしょうが、基本的な考え方は次のとおりです。あなたが望むどのように大きなキャンバスが

  • を決定する方法を決定

    • どのようにあなたの画面の大きな
    • 座標が画面の座標と一致するようにキャンバスをスケールします。
    • 自分の定義した座標系に基づいてサイズと座標でビットマップを描画します。

    例:

    あなたは640×480のキャンバスに描きたいです。 画面の解像度は800x400です。 キャンバスをx方向に(800/640)、y方向に(480/400)までスケールします。 座標0,0は左上にあり、640,480は右下にあります。必要に応じて描画します。

    これはアスペクト比やその他のものを考慮して明らかに調整できますが、デバイスが提供する解像度だけでなく、独自の座標系でビットマップのサイズと位置を定義したいという考えがあります。

  • +0

    キャンバスのサイズが画面のサイズで、dpで測定したビットマップのサイズを画面の密度で変更したい場合はどうすればいいですか? – twlkyao

    関連する問題