【问题标题】:What's a good way to render outlined fonts?渲染轮廓字体的好方法是什么?
【发布时间】:2010-11-09 17:14:08
【问题描述】:

我正在用 pygame 在 python 中编写游戏,需要将文本渲染到屏幕上。

我想用带有轮廓的一种颜色渲染此文本,这样我就不必担心文本显示在哪种背景上。

pygame.font 似乎不支持直接做这种事情,我想知道是否有人有任何好的解决方案来实现这一点?

【问题讨论】:

标签: python fonts pygame


【解决方案1】:

一种快速而肮脏的方法是使用轮廓颜色多次渲染您的文本,在文本位置周围的圆圈上少量移动:

1 8 | 2 \ | / \|/ 7----*----3 /|\ / | \ 6 | 4 5

编辑:你的速度更快!不过我不会删除我的答案,这个 ASCII 艺术太好了,值得活下去!

编辑 2: 正如 OregonGhost 所提到的,您可能需要更多或更少的步骤来渲染轮廓,具体取决于您的轮廓宽度。

【讨论】:

  • 查看我对 Nick D. 的回答的评论,这也适用于这个。
【解决方案2】:

我可以给你一个快速而糟糕的解决方案:

将文本打印 8 次,围绕它,再加上一次用于内部文本,像这样

UUU
UIU
UUU

U 代表外部颜色,I 代表内部颜色。

【讨论】:

  • 实际上,如果轮廓不超过 1 个像素宽,四倍(角)就足够了。两个像素也应该没问题。这取决于字体渲染器的速度,解决方案到底有多糟糕。我在 XNA 中使用过它,它的速度非常快,至少如果文本是批量渲染的。
  • 您只需要渲染一次字体。你可以多次重复使用渲染的表面,每次它被blitted到目标表面。
  • TokenMacGuy,这正是我在演示游戏中所做(所做)的事情。我在单独的表面上预渲染了字体。好技巧2!当然,如果您在屏幕上显示的文字不多,那么您不会看到帧速率有任何差异。
  • @TokenMacGuy 使用 pygame.font 接口,我想我需要渲染两次字体;每种颜色一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 1970-01-01
  • 2014-01-20
  • 2018-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多