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)2次元ベクトルの使用を検討しましたが、この問題は非常に複雑です。

3)最終的な列の数がわかっている場合は、大きな行列を使用することを検討しましたが、文字が何であるかによって異なります。列の数を数えるために1回の反復(各文字は3より大きい場合があります)と、データを格納するためのもう1回の反復が必要になります。 。

4

1 に答える 1

2

ドットマトリックス、インクジェット、レーザープリンターを使用したことがあるので、出力する列が最大になる固定サイズのマトリックスを用意することをお勧めします。

たとえば、1インチあたり600ドットの幅8.5インチの用紙の場合、5100列になります。

行は、必要な数または便利な数によって異なります。

また、スペース== 5x7ブランク(ゼロ)のある5x7マトリックスを使用することもできます。文字の間に空白の列をいくつか残し、固定ピッチまたはビットマップフォントに焦点を合わせます。

文字ごとに、マトリックスまたはビットマップが必要になります。配列はこれに非常に適しています。文字に関連付けられたビットマップ(マトリックス)のコレクションは、フォントと呼ばれます。

フォントを縦向きから横向きに、またはその逆に回転させるための行列関数を作成することをお勧めします。

編集1:
センテンスあたりの列数で考えることはできませんが、バッファをフラッシュ(または処理)する前に、センテンスのどれだけがバッファに収まるかを考えることができます。文は非常に小さいものから非常に大きいものまであります(この回答を見てください)。文字行列の幅と文字間の間隔は固定されているため、1文字または多くの文字が収まるかどうかを判断するのは数学関数にすぎません。

于 2013-02-25T15:56:54.347 に答える