- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 WPF 互操作性在 WinForms 表单中托管 WPF 用户控件。
除了丑陋的文本渲染外,一切正常:
<Label Content="Normal text" Name="labelNormal"/>
<Label Content="Bold text" Name="labelBold" FontWeight="Bold" />
-- 这是 WPF 窗口上的简单标签:
最佳答案
(在 1 月 18 日进行编辑以补充说它不仅是字体渲染模式,还有字体本身。)
这里有两个相关因素:字体和字体格式模式。
您的 Windows 窗体主机应用程序正在以 8.25pt 的字体大小强加“Microsoft Sans Serif”的默认字体系列,在 WPF 的度量单位中,它是 FontSize
11. 但 WPF 通常会使用不同的字体 - 我正在使用默认 Aero 主题运行 Windows 7,WPF 默认使用带有 FontSize
的 Segoe UI。共 12 个。
所以你在这里看到不同结果的最大原因是它们是两种不同的字体。添加 FontFamily="Segoe UI" FontSize="12"
到 UserControl
root 元素使两个 WPF 示例在我看来更加一致。 (但这当然会使您的 WPF 文本看起来与包含 Windows 窗体应用程序中的文本不一致。这就是 ElementHost
将 Windows 窗体字体选择传播到 WPF 内容的全部原因。)
在我编辑这个之前,我认为这可能归结于Ideal
之间的差异。和 Display
WPF 文本渲染模式。意识到这主要是关于字体后,我不再认为是这种情况,但我将把对另一个问题的讨论留在这里,因为它对于任何试图让他们的 WPF 文本看起来与他们的 Windows 保持一致的人来说仍然有用形成文本。 WPF 的默认值是 Ideal
,但如果您在 Windows 窗体应用程序中运行,可以说是 Display
更好,因为这会使它看起来与 Windows 窗体通常呈现的东西一致。
您可以通过添加以下内容在 WPF 中基于每个元素来控制它:
TextOptions.TextFormattingMode="Display"
"Display"
取决于您想要的模式)。这个可附加属性是在 WPF v4 中添加的,让您可以在 WPF 自首次发布以来具有的可扩展但略微模糊的文本渲染和 Win32 和 GDI+(因此 Windows表格)使用。这将影响您应用它的元素,以及任何后代。 (例如,如果您在
StackPanel
上设置它,它应该应用于该面板中的所有元素,除非您还在子项上将其设置为本地不同的值。)
Display
获得低保真但更清晰的旧式渲染。
关于wpf - 文本在 WPF 窗口和 ElementHost 内部呈现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679172/
我正在使用非 WPF 应用程序,因此我只能创建 WPF 用户控件。我解决这个问题的方法是将我的窗口创建为用户控件,然后我创建了一个通用的 winform 来托管 wpf 用户控件(使用 Element
我在 WinForms 容器中托管 WPF UserControl。现在,我希望能够为 UserControl 设置主题/外观。为此,我有几个定义“皮肤”的资源词典。当我的应用程序启动时,我创建了一个
是否可以从 WPF 用户控件(即 ElementHost 的子级)显示模态窗口,并将模态窗口的所有者/父级设置为包含表单控件? 我猜你不能这样做,因为 Owner 属性采用 Window 的一个实例,
我有一个小的 WPF 控件,它有一个 TextBlock,TextWrapping 设置为 Wrap。我试图在现有的 WinForms 应用程序中托管它。我将 ElementHost 停靠在表单顶部,
我正在 WinForms 应用程序一侧构建一组 WPF 控件,以便最终可以将整个项目转换为 WPF。我正在使用 WinForms ElementHost 模块并在其中设置我的 WPF 控件。 这是我的
我有一个 Form(winform),它包含 Elementhost。在运行时,我将我的 WPF 用户控件托管到此 elementhost。我对 elementhost 使用了 AutoSize =
我对这个 ElementHost 有很多问题。有人可以看看我有什么,让我知道发生了什么或为什么没有显示吗?一切似乎都正常,只是我看不到 ElementHost 在屏幕上显示/刷新(用户控件)。 测试.
我需要在 Winform 用户控件上托管 WPF 控件。为此,我使用了 ElementHost 控件。当我运行 Ants Memory profiler 时,我知道 ElementHost 控件中存在
我在 ElementHost 内的 Winforms 项目中有一个 WPF 控件(ICSharpCode.AvalonEdit.TextEditor)。 我已经通过调试器确认 TextEditor 实
我试图在 WinForms 应用程序中使用 WPF 文本框,同时将与 WPF 相关的详细信息完全封装在另一个程序集中,但窗体编辑器并没有使它变得简单。 也就是说,Child 访问器总是被分配给一个新的
我正在编写一个程序来在 C# 中实现 COM 组件。该组件也提供了一个 UI 组件。为了便于实现组件的 future 添加,我决定使用 WPF 在 Xaml 中编写 UI,并将其包装在 Element
我有一个 WinForms 控件,里面有一个 TableLayoutPanel,它包含多个 ElementHosts,每个 ElementHost 都包含一个 WPF 控件。 一切正常,除非控件的大小
我有 UserControl,它位于 ElementHost 中. 它包含 DataGrid当用户按下回车键或双击该行时,将显示新窗口(无模式),并且当该窗口关闭时,带有 ElementHost 的窗
我使用 WPF 互操作性在 WinForms 表单中托管 WPF 用户控件。 除了丑陋的文本渲染外,一切正常: -- 这是 WPF 窗口上的简单标签: WPF Window htt
我有一个 Windows 窗体应用程序,它有一个包含 WPF 用户控件的 ElementHost... 在我的 WPF 中,我有一个非常简单的 ListView:
对于生产应用程序,我们希望在 Windows 窗体应用程序的 ElementHost 内显示 DatePicker,但我们遇到了 SelectedDate 和 CurrentDate 不可读的问题,因
我有一个 winforms 应用程序,我想向其添加 WPF 用户控件。问题是当我运行程序时,WPF 用户控件不响应鼠标事件。我可以在控件中切换并使用键盘就好了,但是控件不响应鼠标点击(当您将鼠标悬停在
长期潜伏者和自学 OOP 和 c# 的大部分人都感谢这里的伟人。我 99% 的问题似乎都是通过全网搜索找到的,但我仍然被这个问题困住了。 我的问题是我有一个自定义 GUI,我在其中堆叠托管 WPF 用
我在个人库中使用 WPF 用户控件。这些库包含在我的 WPF 和 WindowsForms 程序中。现在我的 UserControl 必须显示一个新的 (WPF) 窗口。在新窗口中,我想设置所有者。我
[更新,见底部!] 我们托管 WPF 的 WinForms 应用程序中存在内存泄漏 FlowDocumentReader在 ElementHost .我在一个简单的项目中重新创建了这个问题并添加了下面
我是一名优秀的程序员,十分优秀!