Растровое изображение, отображающее ОЧЕНЬ верхний левый угол без масштабирования - PullRequest
1 голос
/ 20 февраля 2011

Я пытаюсь отобразить изображение на Canvas, но когда я вызываю метод drawBitmap, я получаю только ОЧЕНЬ верхний левый угол, изображение не масштабируется до высота и ширина экрана. Вот мой код, который включает в себя пользовательский вид:

    private class ImageOverlay extends View {

    public ImageOverlay(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {

        Bitmap image = BitmapFactory.decodeFile(getPath(baseImage));
        Paint paint = new Paint();
        paint.setAlpha(200);

        canvas.drawBitmap(image, 0, 0, paint);
        Log.v(TAG, "Drew picture");

        super.onDraw(canvas);           
    }

    private String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        if(cursor!=null)
        {
            int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        }
        else return null;
    }

baseImage - это объект Uri, который передается моей деятельности, и он НЕ нулевой! Вот фактическое изображение:
Actual image
И вот изображение Canvas:
The canvas image

Ответы [ 2 ]

2 голосов
/ 20 февраля 2011

но когда я вызываю метод drawBitmap, я получаю только ОЧЕНЬ верхний левый угол, изображение не масштабируется до высоты и ширины экрана.

Вы говоритеваша программа для этого: canvas.drawBitmap(image, 0, 0, paint);
As (0,0) - верхний левый угол.

Если вам нужно изображение меньшего размера, вы должны уменьшить его, вероятность будет Bitmap small = Bitmap.createScaledBitmap(image, width, height, false);

1 голос
/ 20 февраля 2011

Используйте версию Canvas.drawBitmap(), которая выполняет необходимое масштабирование, например эта .

Кстати, ваша распакованная битовая карта, очевидно, намного больше, чем вам нужно, и она будет занимать огромное количество оперативной памяти. Я рекомендую использовать BitmapFactory.Options.inSampleSize, чтобы уменьшить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...