Хорошо.Я, вероятно, должен был быть более ясным.Мне нужно было, чтобы высота и ширина масштабированного растрового изображения еще не отображались на экране, чтобы я мог рисовать некоторые наложения в правильном положении.Я знал положение наложений в исходном растровом изображении, но не масштабировал.Я вычислил несколько простых формул, чтобы вычислить, куда они должны перейти на растровом растровом изображении.
Я объясню, что я сделал, если кому-то еще может понадобиться однажды.ширина и высота растрового изображения.Высота и ширина ImageView жестко запрограммированы в xml-файле на 335.
int bitmap_width = bmp.getWidth();
int bitmap_height = bmp.getHeight();
Я определил, какой из них был больше, чтобы я мог правильно определить, на каком из них основывать вычисления.Для моего текущего примера ширина больше.Поскольку ширина была уменьшена до ширины ImageView, я должен найти уменьшенную высоту.Я просто умножил отношение ширины ImageView к ширине растрового изображения на высоту растрового изображения.Деление выполняется последним, потому что первое целочисленное деление привело бы к ответу 0.
int scaled_height = image_view_width * bitmap_height / bitmap_width;
С масштабированной высотой я могу определить количество пустого пространства по обе стороны от масштабированного битового массива, используя:
int blank_space_buffer = (image_view_height - scaled_height) / 2;
Чтобы определить координаты x и y места наложения на масштабированном растровом изображении, я должен использовать исходные координаты и эти рассчитанные числа.Координата x в этом примере проста.Поскольку масштабированная ширина - это ширина ImageView, мне просто нужно умножить отношение ширины ImageView к ширине растрового изображения с исходной координатой x.
int new_x_coord = image_view_width * start_x / bitmap_width;
Координата y немного сложнее.Возьмите отношение масштабированной высоты растрового изображения к исходной высоте растрового изображения.Умножьте это значение на исходную координату y.Затем добавьте буфер пустой области.
int new_y_coord = scaled_height * start_y / bitmap_height + blank_space_buffer;
Это работает для того, что мне нужно.Если высота больше ширины, просто поменяйте местами переменные width и height.