Как относительно масштабировать размер пользовательского элемента управления?

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

  •  06-07-2019
  •  | 
  •  

Вопрос

Как относительно масштабировать размер пользовательского элемента управления, например изображения (в редакторе изображений).

Пример (100%):

alt text
(источник: stegnar.com)

Уменьшенный уровень UC (70%):

alt text
(источник: stegnar.com)

Ну, я добиваюсь этого в графическом редакторе, но я бы хотел в WPF.:) Мне это нужно, чтобы настроить мое приложение на другое разрешение экрана, при этом ничего не скрывая (никаких полос прокрутки).

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

Решение

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

<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1">
<Grid>
    <Viewbox StretchDirection="Both" Stretch="Uniform">
        <local:UserControl1 Height="600" Width="600"/>
    </Viewbox>
</Grid>

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

вы можете поместить весь контейнер в ViewBox

<Viewbox StretchDirection="Both" Stretch="Uniform">
  <Grid>...</Grid>
</Viewbox>

вам не нужно помещать каждый отдельный текстовый блок в него!

Использование Viewbox (как сказал Милан Наньков) - отличная идея. Одна вещь, которую я должен предупредить вас, это то, что она также увеличивает или уменьшает другие визуальные аспекты.

Например, текстовое поле с размером 200 X 1000 сильно отличается от текстового поля с размером 20 X 100, увеличенным в 10 раз.

WPF предоставляет множество вариантов компоновки, которые могут изменять размеры элементов управления в соответствии с размером контейнера. Но это не меняет размер текста. Viewbox преодолевает эту проблему, но представляет другую проблему. Проверьте изображение ниже, которое показывает то же самое текстовое поле в окне просмотра до и после увеличения.

Артефакты, представленные с помощью viewbox

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

Еще одна хитрость - привязать высоту элемента управления к размеру шрифта. В этом случае нам понадобится конвертер. Пожалуйста, обратитесь к этому ответу >

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