【问题标题】:Text rendering in WPFWPF 中的文本渲染
【发布时间】:2013-08-13 03:45:21
【问题描述】:

我需要在 WPF 中设置灰度文本渲染器抗锯齿,我可以通过使用此属性在 XAML 中完成:

TextOptions.TextRenderingMode="Grayscale"

但我需要它在屏幕上绘制文本,使用 FormattedText,但 FormattedText 没有文本渲染和抗锯齿选项。

我发现字体大小低于 21 将渲染模式更改为 cleartype,但我总是需要灰度。

示例代码:

FormattedText ft = new FormattedText(
    "small text",
    cult_info,
    FlowDirection.LeftToRight,
    rw.font,
    18,
    Brushes.DarkGreen);
Point o2 = new Point(dock_w - 5, origin.Y+ft.Height/8);
Point o3 = new Point(dock_w-5, origin.Y+ft.Height);
Point o4 = new Point(dock_w-5-ft.Width, origin.Y+ft.Height);
ft.TextAlignment = TextAlignment.Right;
dc.DrawText(ft, o2);
dc.DrawLine(pen,o3,o4);

【问题讨论】:

  • DrawingContext dc 在哪里初始化或分配?
  • @WouterHuysentruit 在我的自定义控件的 OnRender 方法中。
  • 为什么不将引用传递给您的自定义控件,而不是像我的回答中的 visual?喜欢TextOptions.SetTextRenderingMode(this, TextRenderingMode.Grayscale);
  • @WouterHuysentruit 我试过了,但是不行!
  • 很奇怪。恐怕我不能在这个问题上帮助你。太久没用WPF了。

标签: c# wpf xaml


【解决方案1】:

你试过了吗:

TextOptions.SetTextRenderingMode(visual, TextRenderingMode.Grayscale);

在上下文中绘制文本之前(我认为甚至在调用RenderOpen之前)?

【讨论】:

  • 我不使用 Visual 和 RenderOpen,我需要更改特定 DrawingContext 或同时 UserControl 的渲染选项。
  • 请通过添加更多特定问题的示例代码来改进您的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多