1

画面サイズに基づいて画像をスケーリングできるようにしたい。通常のJavaアプレットでは、次のようなことをします....

int windowWidth = 1280;
int windowHeight = 720;

Image image;

public void paint(Graphics g)
{
    g.drawImage(image, x, y, windowWidth / 4, windowHeight / 16, null);
}

私はしばらくの間答えを探していましたが、見つけたものはすべて奇妙な結果になっているようです。私が読んだことから、解像度に依存しないピクセルで何かをする必要があるかもしれませんが、100%確信が持てません。

私が避けようとしているのは、さまざまな画面密度のためにまったく新しい画像とアイコンのセットを作成しなければならないことです。上で示した方法は、問題なくデスクトップ アプリのサイズを変更できます。

編集:

これは、Androidで画像を描画するために使用しているものです。

Matrix matrix = new Matrix();
Bitmap image;

Constuctor....()
{
image = BitmapFactory.decodeResource(context.getResources(), R.drawable.play);
}

public void render(Canvas c)
{
    c.drawBitmap(image, matrix, null);
}
4

1 に答える 1

1

こんにちは、スケールビットマップを投稿したこの質問を参照してください

キャンバスを使用している場合は、キャンバスの幅と高さを取得します。または、正式な通常のレイアウトにしたい場合は、次を使用して幅と高さを取得します

DisplayMetrics metrics = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(metrics);
 dispWidth=metrics.widthPixels;
 dispheight=metrics.heightPixels;

次に、このように要件に応じてビットマップをスケーリングします。これには8つのレンガが必要なので、列の数で割って幅を取りました

      String strwidth=String.valueOf(((float)(bmp.getWidth())/NO_COLUMNS));
        if(strwidth.contains("."))
        {
            scalebit=Bitmap.createScaledBitmap(bmp, (int)(Math.ceil(((float)bmp.getWidth())/NO_COLUMNS))*NO_COLUMNS, bmp.getHeight(), true);
        }
        else
        {
            scalebit=bmp;
        }
于 2013-02-05T06:19:05.607 に答える