是否可以“缩放”WPF RichTextBox 中的文本?

dev*_*os1 6 .net c# wpf richtextbox zooming

我注意到 WinForms RichTextBox 有一个ZoomFactor属性,我认为这正是我想要的——不幸的是,WPF 变体似乎完全缺少这个属性。

有什么方法可以实现相同的功能(增加/减少整个文档的可见文本大小而不实际更改底层 RTF)?

更新:虽然在 RichTextBox 上设置 LayoutTransform 似乎可以在非常简单的设置下工作,但由于以下几点,它与设置 ZoomFactor 并不完全相同:

  • 首先,滚动条也被缩放。这看起来很愚蠢。
  • 其次,在我的应用程序中(出于某种原因,但不是在 Kaxaml 中——我将探索这一点以找出原因),文本是位图缩放的,因此它只是放大渲染的文本,而不是矢量缩放它,因此它是平滑的。这是我正在谈论的示例(请注意大的自定义滚动条):

替代文本

更新 2:Display好的,我发现位图缩放是由将 TextOptions.TextFormattingMode 设置为而不是引起的Ideal。将其设置为理想状态会重新引入矢量缩放。

然而仍然有那个讨厌的滚动条!我的意思是,一种选择是禁用 RichTextBox 上的滚动并将其包装在 ScrollViewer 中,但我想知道这是否会降低性能。我还想知道如果我这样做,文本换行是否仍然有效。

Rob*_*ney 5

这应该可以帮助您开始:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <DockPanel LastChildFill="True">  
     <Slider x:Name="Scale" DockPanel.Dock="Bottom" Minimum="1" Maximum="20"/>
     <RichTextBox>
      <RichTextBox.LayoutTransform>
        <ScaleTransform ScaleX="{Binding ElementName=Scale, Path=Value}" ScaleY="{Binding ElementName=Scale, Path=Value}"/>
      </RichTextBox.LayoutTransform>
     </RichTextBox>
  </DockPanel>
</P
Run Code Online (Sandbox Code Playgroud)