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

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

Пример (100%):

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

UC в уменьшенном масштабе (70%):

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

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


person Peter Stegnar    schedule 13.09.2009    source источник


Ответы (3)


arrow_upward
35
arrow_downward

Вы можете попробовать элемент управления 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>

person Milan Nankov    schedule 13.09.2009
comment
Здорово! Это именно то, что мне нужно. - person Peter Stegnar; 13.09.2009

arrow_upward
7
arrow_downward

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

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

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

person eon    schedule 30.03.2012

arrow_upward
5
arrow_downward

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

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

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

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

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

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

person Trainee4Life    schedule 13.09.2009