Калибровка содержания для вписывания в разрешение экрана

Просто сделайте график с краями, соединяющими двух человек, если им позволяют совместно использовать подарки и затем использовать идеальный алгоритм соответствия. (Ищите "Пути, Деревья и Цветы" для (умного) алгоритма)

7
задан Chen Kinnrot 11 July 2009 в 18:44
поделиться

4 ответа

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

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Viewbox>
        <StackPanel>
            <TextBlock FontSize="14">Example</TextBlock>
            <Border Background="Aqua" Width="100" Height="100"></Border>                    
        </StackPanel>
    </Viewbox>
</Window>

у вас есть TextBlock и цветная рамка, расположенные вертикально; если вы запустите этот xaml, окно будет иметь размер 300x300, шрифт TextBlock будет иметь размер 14, а цветная граница будет 100x100. Если вы измените масштаб окна, вы увидите соответственно масштаб TextBlock и Border (так что они не будут больше того размера, который вы указали в xaml), сохраняя относительные пропорции. Viewbox действительно полезен в этом отношении, если вам нужно окно, расположение внутренних компонентов которого всегда одинаково независимо от окончательного разрешения, в котором оно будет отображаться (что имеет значение, так это соотношение сторон, подумал). Очевидно, это работает с любым содержимым, которое вы помещаете в окно просмотра (например, у нас было приложение с видео и 3D-видами). Обратите внимание, что в Visual Studio 2008 вы не сможете видеть содержимое окна просмотра в конструкторе.

Надеюсь на эту помощь.

25
ответ дан 6 December 2019 в 06:25
поделиться

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

2
ответ дан 6 December 2019 в 06:25
поделиться

Если вы хотите масштабировать все по размеру окна, просто поместите все в элемент управления Viewbox.

1
ответ дан 6 December 2019 в 06:25
поделиться

Do you mean you want the window to fill the entire screen? The simplest way to do that (without causing further headaches) is to maximise the window.

w.WindowState = WindowState.Maximized;

EDIT:

A scalable window layout requires you to avoid using the XAML editor in Visual Studio! Actually you can do it in the editor, but it is very hard.

Much easier to write the XAML by hand:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>

    <Label Grid.Column="0" Grid.Row="0">First Name</Label>
    <TextBox Grid.Column="1" Grid.Row="0" Name="firstName">Fred</TextBox>
    <Label Grid.Column="0" Grid.Row="1">First Name</Label>
    <TextBox Grid.Column="1" Grid.Row="1" Name="lastName">Smith</TextBox>
</Grid>

This will size to fit the window, though may look strange, as the rows and columns will by default get half the space each. You can override this so they have a height determined by their contents instead:

<RowDefinition Height="Auto"/>

It can also help to put margins on some controls, to space them out:

<TextBox Grid.Column="1" Grid.Row="1" Margin="6" Name="lastName">Smith</TextBox>
0
ответ дан 6 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: