【问题标题】:How to create a custom character in Turbo C++如何在 Turbo C++ 中创建自定义字符
【发布时间】:2011-07-29 18:52:55
【问题描述】:

我在 C++ 中达到了需要自定义字符的地步。我将尝试解释我的意思:你们已经知道文本模式中的字符是点的模式,就像“A”一样:

0000001000000
0000010100000
0000100010000
0001000001000
0001000001000
0001111111000
0001000001000
0001000001000
0001000001000

...其中 1 代表活动点,0 代表非活动点。我想知道如何以这种方式自己创造这样一个角色。有人告诉我有一种方法(无需经历巨大的混乱),但我没有得到彻底的指导。我希望我能在这里得到帮助。谢谢。

【问题讨论】:

  • 这让我想起了 89 年 Z80 的美好时光...PEEKPOKE,美好时光...顺便说一句,现在是 2011 年。
  • 感谢 jonathan wood 编辑正文。
  • 为了回答乔纳森在他删除的回复中的回答,Turbo C++只有一个平台:DOS。
  • 顺便说一句,先生,这是我目前正在做的事情adf.ly/2BrNy 我希望等号(=)像下面的完整块一样宽一点,我认为它看起来更合适.这就是为什么我需要制作一个我在文本模式下工作的自定义字符。问候
  • 先生,我可以向您保证,我在文本模式下工作 :) 哈哈,我为任何人工作我只是想知道他们是如何在 winamp 或其他媒体播放器中制作可视化的,所以我决定这样做在文本模式下(因为图形模式在我的 Windows 版本下不起作用,我也想获得帮助;))所以我做了这件事。它工作正常,但我只是想让它看起来更好

标签: c++ console dos character


【解决方案1】:

假设您在文本模式下以 DOS 为目标 - 在中断 10h、AH 11h 上阅读。它允许您将用户定义的字符加载到字符生成器内存中。见这里:http://webpages.charter.net/danrollins/techhelp/0151.HTM

我认为 Turbo C 没有针对该特定调用的包装函数。要直接调用中断,请使用 int86() 函数。

【讨论】:

  • 我认为这会有所帮助 :) 我认为我应该先了解如何调用中断 :)
  • 如果你只想要一条双水平线,这有点过头了。请参阅我的其他答案。
  • 注意:int 10h 技巧仅适用于正确的 DOS 中的真文本模式。 Windows(或 Linux)上的控制台窗口不是文本模式。它只是在某种程度上假装。
【解决方案2】:

这是处理视频适配器文本模式内存、BIOS int 10h 调用等。所以 1990 年代...大多数现代操作系统不能在文本模式下工作,而是使用 TrueType 字体(即使是“控制台”应用程序)模拟文本模式)。

【讨论】:

  • 哇,先生,在我头顶飞过 :) 有没有一种简单的方法可以做到这一点?我正在使用 rad studio 在控制台应用程序和文本模式下工作。
  • @Mohammad - 不,没有简单的方法可以做到这一点。在您需要的意义上,控制台应用程序不在文本模式下。它仍处于图形模式,并使用操作系统/windows 管理器提供的字体来绘制文本。您可以强制用户在您的应用程序中使用自定义字体,但这是用户控制台上的设置,或者您可以通过 Windows API 调用执行的操作,准备好加载 TTF 文件。
  • litllleadv 先生,我想你就是我要找的那个人 :) 我相信只有你明白我在这里想说的话(关于比特作为像素的表示)
【解决方案3】:

如果你想要一个占据整个块的双水平线字符,以便一条线不间断地运行,伪字符 0xCD (═) 可能会有所帮助。

这取决于当前的代码页,但大多数国家代码页(包括西里尔文 866)都会保留伪字符。

只输出一行0xCD,看看它的样子。

for(i=0;i<20;i++)
    putchar(0xcd);

【讨论】:

    猜你喜欢
    • 2022-11-23
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2016-02-14
    • 2011-11-18
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多