Android: проблема разрешения изображения при рисовании растрового изображения на холсте - PullRequest
0 голосов
/ 07 февраля 2012

При рисовании на холсте, если я использую этот код для рисования растрового изображения, он растягивается.

Code1:

photoBitmap = Bitmap.createScaledBitmap(tempBitmap, display.getWidth(), display.getHeight(), true); // original

Но если я использую приведенный ниже код для рисования растрового изображения, тогдаРастровое изображение не растягивается, а получает только некоторую часть левого верхнего угла изображения.

Code2:

photoBitmap = Bitmap.createBitmap(tempBitmap);

Теперь, выше, оба кода предназначены для создания / получения растрового изображения.и чтобы нарисовать растровое изображение на холсте, я использую следующий код:

canvas.drawBitmap (photoBitmap,0,  0, null);// Original Without ImageView

Теперь, что я должен сделать, чтобы увидеть полное изображение, и оно не должно получить царапины.

Спасибо.

1 Ответ

1 голос
/ 08 февраля 2012

Звучит так, будто вы просите растянуть растровое изображение в обоих направлениях одинаково, чтобы оно уместилось на дисплее.Попробуйте это:

        float xscale = (float)display.getWidth() / (float)tempBitmap.getWidth();
        float yscale = (float)display.getHeight() / (float)tempBitmap.getHeight();
        if (xscale > yscale) // make sure both dimensions fit (use the smaller scale)
           xscale = yscale;
        float newx = (float)tempBitmap.getWidth() * xscale;
        float newy = (float)tempBitmap.getHeight() * xscale; // use the same scale for both dimensions
        // if you want it centered on the display (black borders)
        float borderx = ((float)display.getWidth() - newx) / 2.0;
        float bordery = ((float)display.getHeight() - newy) / 2.0;
        photoBitmap = Bitmap.createScaledBitmap(tempBitmap, newx, newy, true);

        // your drawing code will now look like this
        canvas.drawBitmap (photoBitmap, borderx,  bordery, null); 
...