2012-01-31 35 views
1

我正在繪製WPF中的某些圖像,這些圖像將由遊戲(由第三方開發)顯示。我目前使用RenderTargetBitmap生成圖像。不幸的是,它似乎只支持Ideal文本格式模式,導致模糊的小字體。該應用程序是第三方遊戲,因此無法使用圖像。我能否獲得TextFormattingMode =在屏幕外繪製時顯示(例如RenderTargetBitmap)?

我可以告訴RenderTargetBitmap假設它正在繪製一張指定給當前監視器之一的圖像嗎?是否有另一種方式讓WPF使用Display渲染模式進行離屏繪製?

我明白爲什麼這個看似錯誤的理論意義,但在實踐中也有,爲什麼我覺得這是不這樣做不合理的事情的原因:

  • 的事情之一了Display模式允許的別名文字,這種文字在尺寸上比Ideal渲染更小,並且完全獨立於諸如伽瑪等監視器屬性。
  • 小型Display的屏幕截圖 - 在ClearType中呈現的模式文本在任何屏幕上看起來要好得多,即使是具有不同gamma值的屏幕,也不會使用Ideal模式文本。

WPF渲染引擎可以做到這一點,還是我必須回落到GDI? (在使用Aliased或ClearType渲染離屏時沒有困難)

回答

0

確實沒有明顯的這樣做。我想繪製圖像從來不是WPF的目標;事實上,大多數情況下它可以做得相當好,但這一事實必定是偶然的。

0

看來現在這個工作。其他人可以驗證嗎?下面是相關的代碼:

var textBlock = new TextBlock(); 
textBlock.Text = "Hello World"; 
textBlock.FontFamily = new System.Windows.Media.FontFamily("Arial"); 
textBlock.Background = System.Windows.Media.Brushes.Transparent; 
textBlock.Foreground = System.Windows.Media.Brushes.Black; 
textBlock.FontSize = 50; 

// . Set Formatting Mode Works! Setting the rendering mode doesn't. 
System.Windows.Media.TextOptions.SetTextFormattingMode(textBlock, System.Windows.Media.TextFormattingMode.Display); 

編輯:忘了提我使用的.NET 4.5框架

EDIT2:顯示和理想之間的區別是在較小的字體尤其明顯。

+0

你有一個完整的例子,它會產生一個PNG嗎?如果是這樣,請把它發佈到pastebin.com或類似的地方嗎? – 2013-09-19 18:08:53

+0

是的,試試這個http://pastebin.com/8N2pbAHU。我替換了粘貼中的一些變量,所以代碼未經測試。 – 2013-09-23 15:28:12

+0

我試過了。我不認爲它與'TextFormattingMode.Display'在實際屏幕上具有相同的效果:具體來說,沒有ClearType(沒有子像素消除鋸齒)。鑑於最新的發展(在MS Office 2013和Windows 8中模糊的非ClearTyped渲染),這不是太令人驚訝,我猜... – 2013-10-04 14:35:17