Реализация прокрутки текста с DirectWrite

У меня есть строка, которая хранит все виды зарегистрированных данных. Эти данные должны быть доступны через консоль. Консоль имеет ограниченную высоту. Поэтому мне не нужно отображать весь текст, а только то, что видно. Для этого у меня есть переменная, которая хранит количество пикселей от нижнего (самого последнего) конца текста, который пользователь прокрутил вверх. Теперь я предполагаю, что мне нужен способ выяснить, какая часть моего текста помещается в мою консоль, и как указать DirectWrite только визуализировать это.

Что я сделал до сих пор:
Щас пользуюсь CreateTextLayout(...) а также DrawTextLayout(...) нарисовать полный текст (прямо сейчас небольшой тестовый текст) без возможности прокрутки.

CreateTextLayout(...) уже принимает аргументы maxWidth а также maxHeight, Так что, возможно, это решает проблему рендеринга только того, что подходит для консоли.

Я также использовал DWRITE_PARAGRAPH_ALIGNMENT_FAR чтобы были видны новейшие текстовые строки. А как добавить дополнительную прокрутку (лучше всего в виде дополнительных пикселей, а не линий, чтобы я мог реализовать плавную прокрутку с помощью некоторого увеличения по времени)?

Короче

  1. Есть ли CreateTextLayout(...) справиться с «визуализировать только то, что видимым» для меня?
  2. Как включить прокрутку?

Редактировать: Изменилось название, так как вопрос не очень хорошо подводил итог.

0

Решение

TextLayout является внутренним представлением текста. Представьте, что это набор картинок (символов), представляющих каждого персонажа (это не совсем верно, но этого достаточно, чтобы объяснить). Когда вы, наконец, визуализируете текст, цель рендеринга закрашивает только то, что видно на экране, поэтому она обрезается там, где она перекрывает HDC.
Вот как это может работать:

Когда вы вызываете DrawTextLayout (), вы назначаете функции начальную точку (начало координат) для рисования. Вычтите Scrolling-y-Value из y позиции источника … готово.

Если вы хотите узнать больше о Glyphs:
-Catch22.com Имеет отличный, но незаконченный учебник Neatpad с использованием uniscribe (API ужаса, но он дает представление о том, как DirectWrite работает внутри)

-В MSDN также есть Учебное пособие о том, как работать непосредственно с Glyphs через DirectWrite и как создать собственный рендер:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd941787%28v=vs.85%29.aspx

Я надеюсь, что смогу помочь.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector