WPF WindowsFormsHost创建模糊文本

时间:2014-05-15 13:54:21

标签: wpf visual-studio-2010 text-rendering windows-forms-host

我在WPF窗口的DataGridView内托管了一个winforms WindowsFormsHost。功能很好,但网格单元格中的文字看起来更模糊。通常WinForms文本几乎没有抗锯齿。

如何让DataGridView文字看起来像在Windows Form上一样,或者至少更清晰?我尝试使用TextOptions.TextFormattingMode的{​​{1}}和SnapsToDevicePixels设置,但没有看到任何差异。

我的意思是这里有两个截图:

WPF WindowsFormsHost中的

Datagridview

DataGridView in WindowsFormHost

Windows窗体中的

WindowsFormsHost

DataGridView in WinForms

1 个答案:

答案 0 :(得分:0)

托管的WinForms / Win32内容的外观不应受WPF的影响。存在“空域”限制,该限制规定单个窗口像素只能由单个图形API拥有,并且它只能由该API绘制。因此,即使由WPF托管,WinForms内容也是由WinForms / GDI +绘制的。这解释了为什么托管内容将在同一窗口中的任何WPF内容之上绘制,即使WPF内容位于其前面也是如此。

更改像TextFormattingMode这样的WPF渲染属性不会影响互操作内容的外观。您应该查看托管的WinForms内容的布局/呈现属性。

<强>更新

据推测,模糊效应是WPF默认为DataGridView的灰度AA。在Paint的{​​{1}}和/或CellPainting事件中,将图形文字提示设置为cleartype:

DataGridView

消除了大部分的模糊性。