Математика - Изменение высоты контейнера в соответствии с масштабируемыми и фиксированными объектами - PullRequest
2 голосов
/ 03 июля 2011

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

В этой задаче меня интересует только высота, поэтому, когда я упоминаю масштаб, я ссылаюсь на масштаб высоты или scaleY.

на диаграмме ниже:

  1. Синий = Главное окно с изменяемым размером.
  2. Зеленый = изменяемый размер контейнера в главном окне.
  3. Красный = текстовые поля с фиксированной высотой (не масштабируемые).
  4. Черный = Масштабируемое изображение.

    enter image description here

содержимое (текстовые поля и изображение) заполняют контейнер, поэтому зеленый контейнер может представлять высоту текстовых полей и изображения или, по крайней мере, разницу между координатой y первого текстового поля и координатой y последнего текстового поля, и высота.

изменение размера окна больше зеленого контейнера не повлияет на зеленый контейнер, и оно останется в своем текущем размере. однако изменение размера окна должно привести к изменению размера контейнера. У меня есть доступ только к высоте изображения. поэтому изменение размера окна будет также уменьшать высоту изображения. высота нового масштабированного изображения будет определять высоту контейнера, содержащего текстовые поля фиксированной высоты.

Проблема: после изменения размера окна до более низкой высоты, как я могу узнать, насколько масштабировать изображение (от 0,0 до 1,0), чтобы текстовые поля фиксированной высоты оставались как можно дальше друг от друга, а контейнер изменялся его границы остаются одинаково удаленными (10px на этой диаграмме) от окна.

image.scaleY = ...

Ответы [ 2 ]

1 голос
/ 03 июля 2011

Уменьшение размера окна на dh пиксель также должно уменьшить высоту изображения на dh пиксель, чтобы сохранить все остальные абсолютные значения.

Таким образом, коэффициент масштабирования равен (учитывая, image_height - текущая высота изображения, а dh - количество пикселей, которое нужно уменьшить)

scale_y = (image_height - dh) / image_height
0 голосов
/ 03 июля 2011

Просто возьмите высоту окна с изменяемым размером (зеленого цвета) и вычтите сумму компонентов фиксированной высоты и расстояния между компонентами.Оставшееся пространство - это то, что доступно для реализуемого изображения.

Конечно, большинство наборов инструментов пользовательского интерфейса включают в себя некоторые инструменты, облегчающие эту задачу, такие как макет таблицы или сетки, который поддерживает фиксированные и масштабируемые ячейки, или макет дока.Если вы можете, вы должны воспользоваться преимуществами такого рода функций, так как он будет более производительным / отзывчивым.

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