ToggleButton 中的图像在 WPF 中显示不正确
The image in ToggleButton is not displayed properly in WPF
我正在尝试在 ToggleButton
中将图像放在文本之前。一切进行得都很顺利。但是图像显示不正确。我在这里放大了图像,以便您可以看到我在说什么。如您所见,图像的某些部分显示不正确。
我要显示的图像
结果
缩放结果
<BitmapImage x:Key="ColumnsLayoutMiniIcon" UriSource="pack://application:,,,/Main/Resources/dark/images/mini/columns_layout_mini_icon.png"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<StackPanel Orientation="Horizontal">
<Image x:Name="Border" Width="13" Height="13" Source="{StaticResource ColumnsLayoutMiniIcon}">
</Image>
<Border x:Name="Content"
Padding="10 0 10 0">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="-2 -3 0 0"
RecognizesAccessKey="True" />
</Border>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Cursor" Value="Hand"/>
</Trigger>
<Trigger Property="IsChecked" Value="False">
</Trigger>
<Trigger Property="IsChecked" Value="True">
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Foreground" Value="LightGray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<RadioButton Content="Plan View"
GroupName="View"
Style="{StaticResource BaseToggleButton}"
Checked="SwitchToPlanView_Selected"
IsEnabled="{Binding SwitchToModelViewsEnabled}"
IsChecked="{Binding SwitchToPlanViewSelected}">
</RadioButton>
将 UseLayoutRounding="true"
添加到 Window
元素的根目录。这将确保图片与像素对齐,并且不会显示奇怪的伪像。
我正在尝试在 ToggleButton
中将图像放在文本之前。一切进行得都很顺利。但是图像显示不正确。我在这里放大了图像,以便您可以看到我在说什么。如您所见,图像的某些部分显示不正确。
我要显示的图像
结果
缩放结果
<BitmapImage x:Key="ColumnsLayoutMiniIcon" UriSource="pack://application:,,,/Main/Resources/dark/images/mini/columns_layout_mini_icon.png"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<StackPanel Orientation="Horizontal">
<Image x:Name="Border" Width="13" Height="13" Source="{StaticResource ColumnsLayoutMiniIcon}">
</Image>
<Border x:Name="Content"
Padding="10 0 10 0">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="-2 -3 0 0"
RecognizesAccessKey="True" />
</Border>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Cursor" Value="Hand"/>
</Trigger>
<Trigger Property="IsChecked" Value="False">
</Trigger>
<Trigger Property="IsChecked" Value="True">
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Foreground" Value="LightGray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<RadioButton Content="Plan View"
GroupName="View"
Style="{StaticResource BaseToggleButton}"
Checked="SwitchToPlanView_Selected"
IsEnabled="{Binding SwitchToModelViewsEnabled}"
IsChecked="{Binding SwitchToPlanViewSelected}">
</RadioButton>
将 UseLayoutRounding="true"
添加到 Window
元素的根目录。这将确保图片与像素对齐,并且不会显示奇怪的伪像。