изменить размер растрового холста - PullRequest
0 голосов
/ 06 августа 2010

Я пытаюсь нарисовать прямоугольник поверх изображения, и у меня возникают проблемы с размещением рисунка на изображении.Только часть Rectangle отображается где-то внизу экрана.Вот что я делаю:

sinewave - это изображение из res> папки для рисования

public void onDraw(Canvas canvas) 
{
     Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sinewave);
     canvas.drawBitmap(myBitmap, 0, 0, null);

     Paint myPaint = new Paint();
     myPaint.setColor(Color.GREEN);
     myPaint.setStyle(Paint.Style.STROKE);
     myPaint.setStrokeWidth(3);
     canvas.drawRect(0, 35 ,80 , 20, myPaint);
}

Я не могу выйти за пределы 35, я хочу поместить прямоугольник прямо посерединеизображения синусоиды.Может кто-нибудь помочь мне со своими идеями.

1 Ответ

1 голос
/ 06 августа 2010

Я не уверен, что это сработает, но в растровом изображении есть метод getScaledHeight и width, который вы можете попробовать.Если это дает правильные границы, то на внешней границе будет нарисован прямоугольник, но вы можете настроить его так, как вам нужно.

int height = bm.getScaledHeight(canvas);
int width = bm.getScaledWidth(canvas);
Rect r = new Rect(0, 0, width, height);
canvas.drawRect(r, paint);
...