I noticed the WinForms RichTextBox has a ZoomFactor
property that I assume is exactly what I want--unfortunately this seems to be entirely missing on the WPF variant.
Is there any way I can achieve the same functionality (increasing/decreasing the visible text size of the whole document without actually changing the underlying RTF)?
Update: While setting a LayoutTransform on the RichTextBox does seem to work under very simple settings, it's not exactly the same as setting ZoomFactor because of a couple things:
Update 2: Okay I discovered that the bitmap zooming was being caused by setting TextOptions.TextFormattingMode to Display
instead of Ideal
. Setting it to ideal reintroduces vector zooming.
However there is still that pesky scroll bar! I mean one option is to disable scrolling on the RichTextBox and wrap it in a ScrollViewer, but I wonder if that would deteriorate performance. I also wonder if text wrapping would still work if I did that.
This should get you started:
<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