2010-08-07 69 views
3

我注意到WinForms RichTextBox有一個ZoomFactor屬性,我認爲正是我想要的 - 不幸的是,這似乎完全缺少WPF變體。是否可以「縮放」WPF RichTextBox中的文本?

有沒有什麼辦法可以實現相同的功能(增加/減少整個文檔的可見文本大小,而不需要實際改變底層的RTF)?

更新:而在RichTextBox的設置LayoutTransform似乎在非常簡單的設置工作,它不完全等同於設置的,因爲有兩件事情ZoomFactor:

  • 首先,滾動條放大也。這看起來很愚蠢。第二,在我的應用程序(由於某種原因,但不是在Kaxaml - 我會探索這個弄清楚爲什麼),文字是位圖縮放,以便它只是放大渲染文本,而不是矢量 - 將其放大以便平滑。這裏就是我說的(注意方式,大的自定義滾動條)的例子:

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

更新2:好吧,我發現位變焦正被設置TextOptions引起.TextFormattingMode改爲Display而不是Ideal。將其設置爲理想,將重新引入矢量縮放。

但是仍然有那個討厭的滾動條!我的意思是一個選項是禁用滾動RichTextBox並將其包裝在ScrollViewer中,但我想知道這是否會降低性能。如果我這樣做,我還想知道文本包裝是否仍然有效。

+1

文字換工作得很好。 (更難的問題是如果你想關閉文本環繞和水平滾動。)性能似乎沒有什麼不同,我也不能想到它應該是的原因。你可能想要做的一件事是編輯RichTextBox的控件模板,以便它沒有任何類型的邊框鑲邊,因爲它也得到縮放,這看起來像是放大30倍。 – 2010-08-08 00:55:20

+0

我對性能的擔憂是,RichTextBox可能爲大型文檔執行某種內部虛擬化,如果我手動將其包裝在ScrollViewer中,則不會發生這種情況。 – devios1 2010-08-08 16:31:52

+0

現在一切似乎都工作正常,除了令人討厭的事實,我不能使用顯示模式的RichTextBox(我甚至無法將其設置爲顯示模式時,縮放因子爲1。0,由於RichTextBox和TextOptions的bug /限制),但是這相對較小。到目前爲止,大型RTF文件的性能沒有明顯下降,但是隨着大型RTF文檔的發佈,RichTextBox一直比較慢。 – devios1 2010-08-08 20:55:00

回答

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 
+1

嘿它的作品!我實際上很驚訝,因爲我無法理解添加轉換如何影響文本*包裝*的基本邏輯。 – devios1 2010-08-07 18:51:55

+0

其實我現在有一些麻煩,看到更新後的帖子。 – devios1 2010-08-07 22:25:09

+0

@devos1你有沒有想過滾動條縮放問題? – JobaDiniz 2017-10-02 14:20:11

3

我注意到的WinForms RichTextBox的有 ,我認爲是 正是我想要的一個ZoomFactor性質 - 不幸的是 這似乎對 WPF的變異完全丟失。

您需要回顧並閱讀WPF的基礎知識。項目的項目。停在TRANSFORMS。在TextBox中缺少ZoomFactor的原因是每個WPF控件都可以通過通用標準度量進行轉換(縮放,3d變換)和動畫 - 所以不需要特殊的方法。

+1

我想到了這一點,但不會通過變換來縮放文本框,只是將整個事情統一得更大一些?我想要文本仍然包裹正確,等等。 – devios1 2010-08-07 18:48:42

相關問題