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

时间:2010-08-07 13:32:52

标签: c# .net wpf richtextbox zoom

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

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

更新:虽然在RichTextBox上设置LayoutTransform似乎在非常简单的设置下工作,但它与设置ZoomFactor并不完全相同,因为有几件事情:

  • 首先,滚动条也会缩放。这看起来很傻。
  • 其次,在我的应用程序中(出于某种原因,但不是在Kaxaml中 - 我会探究这个以找出原因),文本是位图缩放,以便它只是放大渲染的文本与矢量缩放相反,它是平滑的。这是我正在谈论的一个例子(注意方式 - 大自定义滚动条):

alt text http://img822.imageshack.us/img822/298/3b7e4e04afc943ff85b2a98.png

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

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

3 个答案:

答案 0 :(得分:3)

  

我注意到WinForms RichTextBox有   我假设一个ZoomFactor属性   正是我想要的 - 不幸的是   这似乎完全没有了   WPF变种。

您需要回过头来阅读WPF的基础知识。逐项。在TRANSFORMS停下来。 TextBox中缺少ZoomFactor的原因是每个WPF CONTROL都可以通过通用标准度量进行TRANSFORMED(缩放,三维变换)和ANIMATED,因此不需要特殊的方法。

答案 1 :(得分:3)

这应该让你开始:

<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

答案 2 :(得分:0)

看看FlowDocumentReader因为我认为这有你想要的东西。