我在WPF窗口的DataGridView
内托管了一个winforms WindowsFormsHost
。功能很好,但网格单元格中的文字看起来更模糊。通常WinForms文本几乎没有抗锯齿。
如何让DataGridView
文字看起来像在Windows Form
上一样,或者至少更清晰?我尝试使用TextOptions.TextFormattingMode
的{{1}}和SnapsToDevicePixels
设置,但没有看到任何差异。
我的意思是这里有两个截图:
WPFWindowsFormsHost
中的 Datagridview
:
Windows窗体中的
WindowsFormsHost
:
答案 0 :(得分:0)
托管的WinForms / Win32内容的外观不应受WPF的影响。存在“空域”限制,该限制规定单个窗口像素只能由单个图形API拥有,并且它只能由该API绘制。因此,即使由WPF托管,WinForms内容也是由WinForms / GDI +绘制的。这解释了为什么托管内容将在同一窗口中的任何WPF内容之上绘制,即使WPF内容位于其前面也是如此。
更改像TextFormattingMode
这样的WPF渲染属性不会影响互操作内容的外观。您应该查看托管的WinForms内容的布局/呈现属性。
<强>更新强>
据推测,模糊效应是WPF默认为DataGridView
的灰度AA。在Paint
的{{1}}和/或CellPainting
事件中,将图形文字提示设置为cleartype:
DataGridView
消除了大部分的模糊性。