【问题标题】:How to prevent text to pixelize when I use RenderTransform?使用 RenderTransform 时如何防止文本像素化?
【发布时间】:2011-08-16 13:55:52
【问题描述】:

当我使用 RenderTransform 属性并放大 RichTextBox 时,我会得到放大的像素化文本(方形文本边缘)。

如何防止这种情况发生?

编辑:

我有 TextOptions.TextFormattingMode="Display" - 当我删除这个选项时一切都很好!

【问题讨论】:

  • 你需要TextFormattingMode做什么?

标签: c# wpf graphics richtextbox rendertransform


【解决方案1】:

这对我有用:

TextOptions.TextFormattingMode="理想"

按照以下建议: http://www.newventuresoftware.com/blog/wpf-text-rendering-quirks-scaletransform

【讨论】:

    【解决方案2】:

    不能声称我可以用我当前的设置重现这个:

    这是20的比例。我认为这可能取决于ClearType系统设置,您可以尝试在RichTextbox上设置RenderOptions.ClearTypeHint="Enabled",这可能会强制执行。

    也可以尝试设置TextOptions.TextRenderingMode="ClearType"

    编辑:This SO question 非常深入地处理文本渲染,可能会有所帮助。


    编辑:看看这个怪异:

    <TextBlock Text="Lorem ipsum dolor sit"
               FontSize="20" TextOptions.TextFormattingMode="Display">
         <TextBlock.RenderTransform>
               <ScaleTransform x:Name="trans" ScaleY="10" ScaleX="10"/>
         </TextBlock.RenderTransform>
         <TextBlock.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation To="20" Duration="0:0:5"
                                         Storyboard.TargetName="trans" Storyboard.TargetProperty="ScaleX"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
         </TextBlock.Triggers>
    </TextBlock>
    

    一旦达到一定的规模,文字对我来说就变得清晰了,真的很奇怪......

    【讨论】:

    • 如果我保留 TextOptions.TextFormattingMode = "Display" 并添加 RenderOptions 像素化保持:(
    • TextOptions.TextFormattingMode="Display" 似乎有效地扼杀了所有让它看起来不错的努力......
    • 你用的是什么字体?只要确保你没有使用位图字体。
    • @Kevin Hsu:我怀疑这是问题所在,甚至我安装的字体之一在正常设置下都不会像素化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2020-02-18
    • 2021-08-16
    • 2011-07-22
    • 2012-03-10
    • 2016-06-01
    • 2022-08-22
    相关资源
    最近更新 更多