[英]Two TextBlocks with same Color (Opacity) and diffrent Fontsizes appear diffrently
我有兩個具有相同前景的 TextBlock,但顯示方式不同。 TextBlocks 之間的差異是 FontSize。 放大/縮小時,顏色也會發生變化。
通過設置<Setter Property="TextOptions.TextFormattingMode" Value="Display" />
它可以工作,但是在 ViewBox 中顯示的文本是模糊的。 TextFormattingMode "Display" 不能在 ViewBox 中使用,請參見此處。
為什么會這樣? 為什么默認情況下顏色不同? 有什么解決辦法嗎?
<Window x:Class="ColoringWithOpacity.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ColoringWithOpacity"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800"
Background="Black">
<Window.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontWeight" Value="Semibold"/>
</Style>
<Style TargetType="{x:Type Run}">
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontWeight" Value="Semibold"/>
</Style>
<SolidColorBrush x:Key="W25" Opacity="0.25" Color="#FFFFFF"/>
</Window.Resources>
<UniformGrid Columns="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Viewbox Grid.RowSpan="2">
<TextBlock Foreground="{StaticResource W25}" Text="13.55" >
<!--<Run Text="13.55"/>--> <!--Works the same-->
</TextBlock>
</Viewbox>
<Viewbox Grid.Row="2" Grid.Column="2">
<TextBlock Foreground="{StaticResource W25}" Text="mm" >
<!--<Run Text="mm"/>--> <!--Works the same-->
</TextBlock>
</Viewbox>
</Grid>
<Viewbox>
<TextBlock Foreground="{StaticResource W25}">
<Run Text="13.55" FontSize="64"/>
<Run Text="mm" FontSize="40"/>
</TextBlock>
</Viewbox>
我在使用 WPF 應用程序時遇到了同樣的問題。 我不明白為什么SolidColorBrush
上的Opacity
不起作用,但解決方案是移動 UI 元素上的不透明度而不是SolidColorBrush
。
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d" Background="Black"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontWeight" Value="Semibold"/>
<Setter Property="Opacity" Value="0.25"/>
</Style>
<Style TargetType="{x:Type Run}">
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontWeight" Value="Semibold"/>
</Style>
<SolidColorBrush x:Key="W25" Color="#FFFFFF" />
</Window.Resources>
<UniformGrid Columns="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Viewbox Grid.RowSpan="2">
<TextBlock Foreground="{StaticResource W25}" Text="13.55" >
<!--<Run Text="13.55"/>--> <!--Works the same-->
</TextBlock>
</Viewbox>
<Viewbox Grid.Row="2" Grid.Column="2">
<TextBlock Foreground="{StaticResource W25}" Text="mm" >
<!--<Run Text="mm"/>--> <!--Works the same-->
</TextBlock>
</Viewbox>
</Grid>
<Viewbox>
<TextBlock Foreground="{StaticResource W25}">
<Run Text="13.55" FontSize="64"/>
<Run Text="mm" FontSize="40"/>
</TextBlock>
</Viewbox>
</UniformGrid>
</Window>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.