3

プロジェクトでフォント「Consolas」および/または「Courier New」を使用して、MS-DOS のような環境を描画します。このプロジェクトでは、(TCanvas の) TextOut を使用して Box Drawing 文字を 1 つのステートメントで順番に印刷すると、すべて問題ありません。たとえば、「────────」と印刷されますが、各文字を指定して印刷すると個別に、各文字の間に「----------」のようなギャップがあります。手動でテストする例を次に示します。

  ...

  Canvas.Font.Size := 12;

  w := Canvas.TextWidth('╬');
  h := Canvas.TextHeight('╬');

  Canvas.TextOut(100, 100, '╬╬');

  Canvas.TextOut(100, 100 + h, '╬');
  Canvas.TextOut(100 + w, 100 + h, '╬');

  Canvas.TextOut(100, 100 + h * 2, '╬');
  Canvas.TextOut(100 + w, 100 + h * 2, '╬');

出力は次のとおりです。

出力のスクリーンショット: 青い背景に白い文字。 最初の行には文字が接続されていますが、残りの各行には、文字間に非常に小さなギャップが表示されます。

ご覧のとおり、縦はきれいにつながっていますが、横は隙間があります。

どうすれば修正できますか?必要なものを配列に描画すると、手順によって次のように配列が出力されることに注意してください。

  th := Canvas.TextHeight('A');
  tw := Canvas.TextWidth('A');
  for i := 0 to MaxWidth - 1 do
    for j := 0 to MaxHeight - 1 do
    begin
      Canvas.Brush.Color := fChars[i, j].BGColor;
      Canvas.Font.Color := fChars[i, j].FGColor;
      Canvas.TextOut(i * tw, j * th, fChars[i, j].Character);
    end;
4

1 に答える 1