2

我有一条短信,例如:

string text = "HELLO WORLD!"

对于每个字符,如果必须放置一个“像素”来绘制文本,则返回一个 0/​​1 矩阵的函数:

matrix translate(char * value,int height);    
matrix translate("H",3);

必须返回具有以下值的矩阵:

101
111   equal <H>
101

调用每个字符的翻译函数,我想将所有数据存储在一个动态矩阵中:

10101110...
11101100... equal <H><SPACE><E><SPACE>...  etc
10101110...

存储值的最佳方法是什么?

1)我考虑了一个矩阵,但是是静态的。

2)我考虑过使用二维向量,但这个问题非常复杂。

3)当知道最终的列数时,我考虑使用一个大矩阵,但这取决于字母是什么,我需要 1 次迭代来计算列数(每个字母可能大于 3)和另一个来存储数据.

4

1 回答 1

2

在使用点阵、喷墨和激光打印机后,我建议您使用一个固定大小的矩阵,该矩阵具有您将输出的最大列数。

例如,对于 8.5 英寸宽、每英寸 600 点的纸张,将有 5100 列。

行数取决于您需要多少行或方便多少行。

此外,您可能希望使用带有空格 == 5x7 空白(零)的 5x7 矩阵。在字母之间留一些空白列,并专注于固定间距或位图字体。

对于每个字符,您都需要一个矩阵或位图。数组对此非常有效。与字符相关的位图(矩阵)的集合称为字体。

您可能需要编写矩阵函数来将字体从纵向旋转到横向,反之亦然。

编辑1:
您不能考虑每个句子的列,但是在您必须刷新(或处理)缓冲区之前,有多少句子将适合您的缓冲区。句子可以非常小到非常大(看看这个答案)。由于字符矩阵在字符之间具有固定的宽度和间距,因此确定一个字符或多个字符是否可以容纳只是一个数学函数。

于 2013-02-25T15:56:54.347 回答