C# WPF Растяжение/масштабирование окна пропорционально размеру

StackOverflow https://stackoverflow.com/questions/1686248

  •  18-09-2019
  •  | 
  •  

Вопрос

Я знаю о ШрифтРастяжка собственность, но не совсем уверен, как ее использовать.

Я хочу создать окно с разрешением, скажем, 200x400.Затем, когда пользователь растягивает его до 400x800 (или чего-то еще), я бы просто хотел, чтобы все окно растянулось/масштабировалось (в данном сценарии все увеличилось бы вдвое), а не просто перемещалось.Было бы неплохо, если бы это работало и с изображениями, но было бы неплохо просто получить для этого шрифты и общие размеры объектов.

Существуют ли какие-либо встроенные функции или сторонние библиотеки, обеспечивающие эту функциональность?

Это было полезно?

Решение

Если весь ваш контент необходимо растянуть пропорционально, включая тексты, элементы управления и изображения, зафиксируйте размер основной панели 200x400 и включите ее в Viewbox панель.

Проблема может возникнуть, когда пользователь изменяет размер окна непропорционально, например, до 300x400.Тогда в зависимости от свойств Viewbox.StretchDirection и Stretch у вас может быть искаженный макет или пустые области.Чтобы решить эту проблему, вы можете ограничить размер окна определенным соотношением.

Другие советы

Вы можете посмотреть реализацию элемента управления ColorPicker здесь:http://livegeometry.codeplex.com/SourceControl/changeset/view/34720#405553особенно MeasureOverride, ArrangeOverride и ComputeScaleFactor.m_Scale — это ScaleTransform, применяемый ко всему элементу управления.

При необходимости вы также можете использовать SizeToContent и LayoutTransform.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top