WPF: Как отцентрировать и масштабировать персонажа на кнопке? - PullRequest
2 голосов
/ 22 июля 2011

Для проекта, над которым я работаю, я хочу создать экранную клавиатуру. Поэтому я люблю помещать персонажа на кнопку. Но проблема с этим заключается в том, что мне не удается получить персонажа в полном размере и центрировать на кнопке. Каким-то образом у него, кажется, есть место над и под символом, которого я не хочу в этом случае.

Код, который я сейчас использую для кнопки:

<Button Grid.RowSpan="2" HorizontalAlignment="Left" VerticalAlignment="Top" Width="40" Height="40" VerticalContentAlignment="Center">
        <Button.Background>
            <SolidColorBrush Color="Gray" Opacity="0.3" />
        </Button.Background>

        <Button.Content>
            <Viewbox>
                <TextBlock FontSize="40" FontFamily="Monotype Corsiva" Foreground="Red" Text="i" LineHeight="20px" LineStackingStrategy="BlockLineHeight" />
            </Viewbox>
        </Button.Content>
    </Button>

Результат на данный момент таков:

Нажмите

Кто-нибудь знает, как показать символ в полном размере и по центру на кнопке?

Ответы [ 2 ]

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

Это автоматически изменит размер текста с помощью кнопки.

<Viewbox>
    <TextBlock Margin="-2,0,0,0"
               Padding="0"
               FontFamily="Monotype Corsiva"
               Foreground="Red"
               Text="i"
               LineStackingStrategy="BlockLineHeight" />
</Viewbox>

Я думаю, что персонаж выглядит не по центру из-за шрифта, который вы используете. Я скорректировал положение, установив левое значение поля на отрицательное значение (например: Margin="-2,0,0,0").

0 голосов
/ 22 июля 2011

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

<Button Width="30" Height="30">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Canvas Grid.Row="0" Grid.Column="0">
            <TextBlock Canvas.Bottom="-22" Canvas.Right="-10" FontSize="35">h</TextBlock>
        </Canvas>                
    </Grid>
</Button>

enter image description here

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