@postya

Как сделать автоматическое изменение размера шрифта текста при изменении размера окна программы?

Программа на C# + WPF

Есть TextBlock, в котором содежится текст, текст постоянно разный, может быть длинным, а может быть коротким.

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

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

Текущий результат: текст адаптируется, но по сравнению с размером окна, размер текста мелкий и появляются пустоты по бокам TextBlock

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

Как это реализовать?

Большой текст, по боками пустоты:
5e1b2c3da2029738086398.jpeg

Текст поменьше, но также пустоты по боками:
5e1b2c6212142715181484.jpeg

Хотелось бы,чтобы размер шрифта текста был максимально большим, и чтобы весь текст влез в TextBlock
5e1b2d0e3f733566092269.jpeg

<Border 
                Grid.Column="0" 
                Grid.ColumnSpan="7" 
                Grid.RowSpan="8" 
                Visibility="Hidden"
                Name="cardBorder"
                Background="#535353">
                <Grid Background="#535353"
                      ShowGridLines="False">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="0.2*" />
                        <ColumnDefinition Width="10*" />
                        <ColumnDefinition Width="0.2*" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="0.35*" />
                        <RowDefinition Height="10*" />
                        <RowDefinition Height="0.35*" />
                    </Grid.RowDefinitions>
                    <Rectangle Fill="White" Grid.Column="1" Grid.Row="1"/>
                    <Viewbox Grid.Column="1"
                             VerticalAlignment="Center"
                             Stretch="Uniform"
                             StretchDirection="Both"
                             Grid.Row="1"                              
                             HorizontalAlignment="Stretch"
                             >
                        <TextBlock 
                                     FontSize="100"
                                   MaxWidth="1600"
                                   FontFamily="HeronSansCond"
                                   FontWeight="SemiBold"
                                   x:Name="cardText"
                                   Margin="40"
                                      TextTrimming="CharacterEllipsis"
                                   TextWrapping="Wrap"
                                  
                                   Foreground="#535353">
                        </TextBlock>
                    </Viewbox>                   
                </Grid>                
            </Border>
  • Вопрос задан
  • 2126 просмотров
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Событие WindowsSizeChanged
https://docs.microsoft.com/ru-ru/dotnet/api/system...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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