【问题标题】:Adjusting line height in C++在 C++ 中调整行高
【发布时间】:2017-03-01 10:12:18
【问题描述】:

我正在尝试对我一直在编写的迷宫程序进行最后的润色。我使用 Unicode 来分隔墙壁和路径,但是由于(水平)行间距,我不能让它看起来足够紧凑。我附上了两张截图。我只是为了打印每一行而转义换行符“\n”。可以调整线之间的距离还是我坚持这种“有间隙”的表示?

我的输出:

我试图密切代表的内容:

【问题讨论】:

  • 您希望我们帮助您,但您甚至没有向我们展示您的代码 (?!)。
  • 您的终端及其字体选择会影响行高。您很可能无法从您的程序中控制它。

标签: c++ iostream cout


【解决方案1】:

假设您没有打印双换行符,这超出了标准 C++ 的范围,它不提供以标准方式控制终端的设施。

解决方案:

  • 您可以提供一个启动器脚本,该脚本会打开一个具有特定字体的新终端窗口并在其中运行您的应用程序。
  • 您可以使用一些特定于平台的方法来更改背景颜色(ANSI 代码在 unixy 终端中工作,或者在 Windows 终端上使用 Win32 API,在类 Unix 环境中使用 ncurses 库)并以不同颜色打印空格。
  • 使用 GUI 库/框架来完全控制所绘制的内容(我会使用 Qt for C++ GUI 应用程序)。

【讨论】:

    【解决方案2】:

    TBH 如果您想要像素精确的渲染,请使用适当的渲染 API,例如 OpenGL。

    从文本渲染的角度来看,您并没有说要渲染到什么。假设像终端控制台或 shell 窗口之类的东西,那么字符和换行符之外的布局与您的程序无关;视觉表示完全由您要渲染到的外壳决定。

    【讨论】:

    • 这不是答案,而是评论。 (尚未投反对票)。
    【解决方案3】:

    首先,检查您是否真的在每个迷宫扫描线打印一行,而不是与虚假换行符交错。假设排除了这一点,问题在于 unicode 字形不是一个完整的块。所以你必须以某种方式设置字体或选择另一个完整的字形。

    通常控制台窗口是 80 个字符宽 x 22 或 24 个字符高,字符是 8 个像素宽 x 19 个像素高。所以它离方形网格很远,您可能想要偏置迷宫以反映这一点并提供更好的视觉外观(例如,使 2 个像素宽的垂直走廊比 2 个像素宽的水平走廊更常见)。

    请检查二进制图像库字体,您可能会发现它们很有用。

    https://github.com/MalcolmMcLean/binaryimagelibrary

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      相关资源
      最近更新 更多