- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当我尝试使用 .net Framework 4.6.2 构建 WPF 项目时,出现错误,因为 FormattedText() 已过时,如下所示: [过时(“使用 PixelsPerDip 覆盖”,false)] public FormattedText(string textToFormat, CultureInfo culture, FlowDirection flowDirection, Typeface 字体, double emSize, Brush foreground);
新的覆盖方法是public FormattedText(string textToFormat, CultureInfo culture, FlowDirection flowDirection, Typeface 字体, double emSize, Brush foreground, double pixelsPerDip);
问:如何确定 pixelsPerDip ?
问:我如何使用没有 pixelsPerDip 的旧构造函数?因为 pixelsPerDip 对我的项目没有用。
最佳答案
您需要计算显示器的 DPI,请参阅: How can I get the DPI in WPF?
此外,.Net 4.6.2 提供了新的 API 来处理 DPI 感知,因此上述方法可能会被弃用(例如 VisualTreeHelper.GetDpi())。参见 https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/这是一些示例代码和用户指南: https://github.com/Microsoft/WPF-Samples/tree/master/PerMonitorDPI
恕我直言,已添加此参数,以便您的程序可以在具有不同 DPI 的显示器之间拖动,并且仍然可以正确缩放。
来自 FromattedText 声明:pixelsPerDip:
The Pixels Per Density Independent Pixel value, which is the equivalent of the scale factor. For example, if the DPI of a screen is 120 (or 1.25 because 120/96 = 1.25) , 1.25 pixel per density independent pixel is drawn. DIP is the unit of measurement used by WPF to be independent of device resolution and DPIs.
如果您只有 1 个监视器,因此不需要任何 DPI 更改事件处理,请在 Window 的 OnLoaded() 事件(或构造函数)中使用以下示例:
var pixelsPerDip = VisualTreeHelper.GetDpi(this).PixelsPerDip;
关于c# - 在 .NET Framework 4.6.2 中,FormattedText() 已过时,我该如何修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40277388/
我正在使用 用于格式化我的页面。它按预期工作正常,但文本接缝周围的填充很大。所以我给这个元素应用了自己的styleClass但是没有生效。 Firebug 显示该段落具有 styleClass 'se
我正在使用 FormattedText 类创建文本 - 但是在使用此类时如何下标或上标文本?我找到了有关如何在使用 TextBlock 时执行此操作的解决方案,但我使用的是 FormattedText
我正在使用 System.Windows.Media.FormattedText 进行一些低级渲染(具体来说,尝试以一种排版令人愉悦的方式渲染数学方程式)。为此,我使用的文本 block 的精确指标至
在 C# 表单项目中,我可以编写以下代码来获得我想要的东西,但似乎我试图融合两个不同的“世界”。 FormattedText text = new FormattedText(textBox1.Tex
我正在使用以下方法将文本写入我的主窗口。我的问题是,有没有办法在创建后更改 FormattetText 或绘图视觉的文本?或者,如果我希望在运行时更新文本,我应该使用另一种方法来编写文本吗? priv
我正在尝试使用 FormattedText.BuildGeometry 来确定字符的布局方式,以确定鼠标的逻辑位置。在我的上下文中,可以假定 FormattedText 是单行 - 我应该得到一个包含
我正在构建一个文本到图像生成器,它接受文本、字体、最大宽度和一些其他参数,并从中生成图像。它将用作网站中的自定义服务器控件以生成标题。 我已经有了这样一个使用 GDI+ 的组件。问题是 GDI+ 无法
如果我有这样的代码: FormattedText text = new FormattedText(sTheBook, System.Globalization.CultureInfo.C
我正在使用 FormattedText 呈现文本,但似乎确实有任何方法可以对呈现的输出执行每个字符的 HitTest 。它是只读的,所以我基本上只需要选择,不需要编辑。 我会使用 RichTextBo
我们正在使用 WPF FormattedText 对象来确定从 RSS 提要获取最新新闻标题的服务中的文本大小。检索到的文本需要在指定的 Canvas 大小中。该服务每 10 秒运行一次代码,如果一个
使用 WPF4,您可以通过将 TextOptions.TextFormattingMode="Display"和 TextOptions.TextRenderingMode="Aliased"添加到
我正在尝试将标签填充到水平 slider ,并且通过将 Text 传递给 FormattedText 构造函数,我成功地使用了派生自 TickBar 的类来完成此操作。但是现在,当我使用相同的代码并将
在我的 WPF 应用程序中,我有一个自定义的 Canvas 实现,我在其中使用指定的 .ttf 文件绘制了一些文本。 ttf 文件位于一个临时位置,以后可以将其删除。我的问题是,一旦我的文本呈现在 C
我想用不同的渲染选项绘制一个 FormattedText。例如,当我们创建一个标签时,我们可以设置它的 TextOptions.TextFormattingMode(Ideal/Display) 和
我想使用嵌套在 jsbin 中的 sap.m.CustomTile 中的 sap.m.FormattedText 进行演示.我不知道为什么我得到这个文本 SYSTEM SIZE: 我使用的字符串是:
在 WPF4 中,我如何为 drawingvisual 计算 FormattedText 或 GlyphRun 的 'Size'。 我在 Canvas 中使用绘图视觉。当我更改文本大小或文本时,会发生
当我尝试使用 .net Framework 4.6.2 构建 WPF 项目时,出现错误,因为 FormattedText() 已过时,如下所示: [过时(“使用 PixelsPerDip 覆盖”,fa
我是一名优秀的程序员,十分优秀!