C# TabControl项标题文本在旋转选项卡后显示模糊
我需要创建一个WPF TabControl控件,并将选项卡向左旋转 我在网上找到的资源表明,这可以通过对TabControl应用以下两件事来实现:C# TabControl项标题文本在旋转选项卡后显示模糊,c#,wpf,xaml,.net-4.0,C#,Wpf,Xaml,.net 4.0,我需要创建一个WPF TabControl控件,并将选项卡向左旋转 我在网上找到的资源表明,这可以通过对TabControl应用以下两件事来实现: <Setter Property="LayoutTransform"> <Setter.Value> <RotateTransform Angle="270"/> </Setter.Value> </Setter> 及 所有这些工作正常,选项卡按要求显示,但由于某些
<Setter Property="LayoutTransform">
<Setter.Value>
<RotateTransform Angle="270"/>
</Setter.Value>
</Setter>
及
所有这些工作正常,选项卡按要求显示,但由于某些原因,选项卡中的标题文本在旋转后显得模糊,请说明发生这种情况的原因,以及我是否可以采取任何措施来解决此问题
完整的XAML:
您可以签出RenderOptions类,该类控制对象的渲染行为。例如,可以查看用于减少图像模糊的部分。您可以查看控制对象渲染行为的RenderOptions类。例如,在使用它来减少图像模糊的地方可以看到这一点。尝试将SnapsToDevicePixels=True和UseLayoutRounding=True添加到边框或TabControl标记中。在大多数情况下,这些解决了我的模糊问题。 我建议使用以下代码片段:
<TabControl TabStripPlacement="Left" Margin="5" FontSize="13" FontFamily="Verdana" Grid.ColumnSpan="2" SnapsToDevicePixels="True" UseLayoutRounding="True" >
<TabControl.Resources>
<Style TargetType="{x:Type TabItem}">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="0" />
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<Border x:Name="grid" Margin="0" >
<Border.LayoutTransform>
<RotateTransform Angle="270" ></RotateTransform>
</Border.LayoutTransform>
<ContentPresenter>
<ContentPresenter.Content>
<TextBlock FontFamily="Verdana" Margin="4" Text="{TemplateBinding Content}">
</TextBlock>
</ContentPresenter.Content>
</ContentPresenter>
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
<TabItem Name="General" Header="YourHeader" > ..
尝试将SnapsToDevicePixels=True和UseLayoutRounding=True添加到边框或TabControl标记中。在大多数情况下,这些解决了我的模糊问题。
我建议使用以下代码片段:
<TabControl TabStripPlacement="Left" Margin="5" FontSize="13" FontFamily="Verdana" Grid.ColumnSpan="2" SnapsToDevicePixels="True" UseLayoutRounding="True" >
<TabControl.Resources>
<Style TargetType="{x:Type TabItem}">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="0" />
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<Border x:Name="grid" Margin="0" >
<Border.LayoutTransform>
<RotateTransform Angle="270" ></RotateTransform>
</Border.LayoutTransform>
<ContentPresenter>
<ContentPresenter.Content>
<TextBlock FontFamily="Verdana" Margin="4" Text="{TemplateBinding Content}">
</TextBlock>
</ContentPresenter.Content>
</ContentPresenter>
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
<TabItem Name="General" Header="YourHeader" > ..
将以下属性添加到窗口声明XAML中
TextOptions.TextFormattingMode="Display"
TextOptions.TextRenderingMode="ClearType"
UseLayoutRounding="true"
将以下属性添加到窗口声明XAML中
TextOptions.TextFormattingMode="Display"
TextOptions.TextRenderingMode="ClearType"
UseLayoutRounding="true"
嗨,丹尼,你能发布一个正在发生的事情的屏幕截图吗?可能这与反锯齿有关。你能在窗口上的try UseLayoutRounding=true获取一个战利品吗。可能是像素捕捉。如果将所有选项卡项旋转-90°,则需要将其内容向后旋转90°。我认为最好只旋转TextBlock的TabItem标题。嗨,Deni,你能发布一个正在发生的事情的屏幕截图吗?可能这与抗锯齿有关。你能在窗口上尝试使用LayoutRounding=true获取一点战利品吗。可能是像素捕捉。如果将所有选项卡项旋转-90°,则需要将其内容向后旋转90°。我认为最好只旋转TextBlock的TabItem标题。谢谢你的解决方案。在.NET3.5中我可以做什么?这仅在.NET4上有效。感谢您提供的解决方案。在.NET3.5中我可以做什么?这仅在.NET4上有效。