Настройка высоты строки в C

#c #iostream #cout

#c #iostream #cout

Вопрос:

Я пытаюсь внести последние штрихи в программу maze, которую я писал. Я использовал Unicode для разграничения стен и путей, однако из-за (горизонтального) межстрочного интервала я не могу заставить его выглядеть достаточно компактным. Я приложил два скриншота. Я просто избегаю новой строки » n», чтобы напечатать каждую строку. Можно ли отрегулировать расстояние между строками или я застрял с этим «неровным» представлением?

Мой вывод:

мой вывод - с пробелами между строками

Что я пытаюсь точно представить:

желаемый результат - отсутствие пробелов между строками

Комментарии:

1. Вы хотите, чтобы мы помогли вам, и вы даже не показываете нам свой код (?!).

2. Ваш терминал и его выбор шрифта влияют на высоту строки. Скорее всего, вы не можете управлять этим из своей программы.

Ответ №1:

Предполагая, что вы не печатаете двойные новые строки, это выходит за рамки стандартного C , он не предоставляет средств для управления терминалом стандартным способом.

Решения:

  • Вы могли бы предоставить скрипт запуска, который открывает новое окно терминала с определенным шрифтом и запускает в нем ваше приложение.
  • Вы могли бы использовать какой-либо специфичный для платформы метод для изменения цвета фона (коды ANSI работают в терминалах unixy или использовать Win32 API для терминала Windows, библиотеку ncurses в Unix-подобных средах) и печатать только пробелы разными цветами.
  • Используйте библиотеку / фреймворк графического интерфейса, чтобы получить полный контроль над тем, что рисуется (я бы использовал Qt для приложения с графическим интерфейсом C ).

Ответ №2:

TBH если вам нужен рендеринг с точностью до пикселя, используйте соответствующий API рендеринга, такой как OpenGL.

С точки зрения рендеринга текста вы не говорите, для чего вы рендерите. Предполагая что-то вроде консоли терминала или окна командной строки, тогда макет за пределами символов и новых строк не имеет ничего общего с вашей программой; визуальное представление полностью определяется оболочкой, в которой вы выполняете рендеринг.

Комментарии:

1. Это не ответ, а комментарий. (Еще не проголосовал против).

Ответ №3:

Во-первых, убедитесь, что вы действительно печатаете строку для каждой строки сканирования лабиринта, а не чередуете с ложными символами новой строки. Предполагая, что это исключено, проблема в том, что символ Юникода не является полным блоком. Итак, вы должны каким-то образом установить шрифт или выбрать другой глиф, который является полным блоком.

Обычно окна консоли имеют ширину 80 символов и высоту 22 или 24 символа, а символы имеют ширину 8 пикселей и высоту 19 пикселей. Таким образом, это очень далеко от квадратной сетки, и вы можете захотеть сместить лабиринт, чтобы отразить это и обеспечить лучший внешний вид (например, сделать вертикальные коридоры шириной в 2 пикселя намного более распространенными, чем горизонтальные коридоры шириной в 2 пьеса).

Проверьте шрифты библиотеки двоичных изображений, они могут оказаться полезными.

https://github.com/MalcolmMcLean/binaryimagelibrary