c# - 是否可以将 WPF RichTextBox 中的文本设为 "zoom"?

标签 c# .net wpf richtextbox zooming

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

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

更新:虽然在 RichTextBox 上设置 LayoutTransform 在非常简单的设置下似乎确实有效,但由于以下几点原因,它与设置 ZoomFactor 并不完全相同:

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

alt text

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

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

最佳答案

这应该让你开始:

<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

关于c# - 是否可以将 WPF RichTextBox 中的文本设为 "zoom"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430629/

相关文章:

c# - 使用 StreamWriter 从文本文件读取并将其写入另一个文本文件,以逗号分隔的格式

c# - 在 WebBrowser 控件中,window.external 不可用

.net - 在 C# 4.0 中为可选参数提供默认值

c# - WPF::自定义控件如何在用户更改属性时触发方法

wpf - 在什么情况下 ICommand CanExecute 可能不会更新?

WPF 数据绑定(bind)线程安全

c# - 如何在解析期间连接 Unity 以使用工厂方法?

c# - 使用 HtmlAgilityPack 将样式属性添加到 Html 的更好方法

c# - 为什么不能通过实例名称访问静态成员?

c# - 为什么 .Net Framework 基类型不包含 IConvertible 方法的实现?