Установка свойств ширины и высоты на auto в WPF приводит к размытию кнопки

Когда я тестировал новый интерфейс для кнопки, я заметил размытие, появляющееся во время выполнения, которого не было во время разработки. Я отследил его до авто собственности.

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

Изображение кнопок

Почему это вызвано? Есть ли способ обойти это?

Спасибо.

Соответствующий XAML:

        <Border Padding="1,1,1,1"  Height="Auto" Width="Auto">
            <!-- Border Properties -->
            <Border.Effect>
                <DropShadowEffect ShadowDepth="0" BlurRadius="8"/>
            </Border.Effect>
            <Border.Background>
                <SolidColorBrush x:Name="BorderBrush" Color="Gray"/>
            </Border.Background>

                <!-- End Properties -->


            <!-- Children -->
            <Grid>
                <!-- Properties -->
                <Grid.Background>
                    <LinearGradientBrush x:Name="BackgroundBrush" EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop x:Name="BackgroundLightColor" Color="#FF282828" Offset="0.572"/>
                        <GradientStop Color="#FF3C3C3C" Offset="0"/>
                    </LinearGradientBrush>
                </Grid.Background>
                <!-- End Properties -->
                <!-- Children -->
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Content="{TemplateBinding Content}" Margin="20,5,20,5">
                    <TextBlock.Foreground>
                        <SolidColorBrush x:Name="ForegroundBrush" Color="#FFBBBBBB"/>
                    </TextBlock.Foreground>

                </ContentPresenter>
                <!-- End Children -->
            </Grid>
            <!-- End Children -->
        </Border>
    </ControlTemplate>
    <!-- End Template -->

Left Button:

<Border Padding="1,1,1,1"  Height="auto" Width="auto">

Правая кнопка:

<Border Padding="1,1,1,1"  Height="29" Width="72">

person Ivel97    schedule 30.07.2013    source источник
comment
Какая?? Что вы имеете в виду, устанавливая для свойства значение auto? Опубликуйте соответствующий код XAML.   -  person Federico Berasategui    schedule 31.07.2013
comment
Похоже на проблему субпиксельного рендеринга, попробуйте установить SnapsToDevicePixels или UseLayoutRounding в приложении или элементе управления.   -  person sa_ddam213    schedule 31.07.2013
comment
Вы пытались установить SnapsToDevicePixels в true на автоматической кнопке?   -  person Aleksandar Toplek    schedule 31.07.2013
comment
@sa_ddam213 Спасибо. UseLayoutRounding работает. Как мне отметить это как ответ?   -  person Ivel97    schedule 31.07.2013
comment
@ level97, я добавил комментарий в качестве ответа, чтобы вы могли пометить его как ответивший   -  person sa_ddam213    schedule 31.07.2013


Ответы (1)


Похоже на проблему рендеринга субпикселей, попробуйте установить SnapsToDevicePixels или UseLayoutRounding в приложении или элементе управления.

person sa_ddam213    schedule 31.07.2013