как установить drawBitmap не на весь экран - PullRequest
3 голосов
/ 24 октября 2011

У меня есть растровое изображение, и я рисую его так:

bit = BitmapFactory.decodeResource(getResources(),
                   R.drawable.anim_ctrl_panel);
Paint paint = new Paint();
canvas.drawBitmap(bit, 80, 440, paint);

Проблема в том, что изображение установлено как полноэкранный. При onTouchEvent методе я реализую событие для растрового изображения, и в любом месте, где я выбираю экран, реализуется событие. Я хочу, чтобы изображение имело определенную позицию и только для этой позиции было реализовано событие. Как я могу это сделать?

РЕДАКТИРОВАТЬ: проблема была в методе onTouchEvent. Это решение:

public boolean onTouchEvent(MotionEvent event) {if(80 <= event.getX() && event.getX()<= (80+bit.getWidth()/2) && (440 <= event.getY() && (event.getY() <= 440+bit.getHeight()))){   
            //...
        }else if((80+bit.getWidth()/2) <= event.getX() && event.getX()<= (80+bit.getWidth()) && (440 <= event.getY() && (event.getY() <= 440+bit.getHeight()))){
            //...
            }

это поможет мне: Как проверить, что изображение обработано с помощью OnTouch ()

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Для изображения, установленного в определенной области, я думаю, что Rectangle полезен для этого,

как-то так, (в моем случае это работа для меня)

Canvas canvas = new Canvas(bitmap);
final Paint paint = new Paint();         
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());         
paint.setAntiAlias(true);         
canvas.drawARGB(0, 0, 0, 0);         
canvas.drawBitmap(bitmap, rect, rect, paint);

Попробуйте.

Для получения дополнительной информации смотрите Android - Рисование (Core)

Спасибо.

1 голос
/ 24 октября 2011

Попробуйте это:

canvas.save();
canvas.translate(posX, posY);
canvas.drawBitmap(bit, 0f, 0f, paint);
canvas.restore();
...