Здравствуйте, CreatorCray, Вы писали:
НС>>Даже с одним шрифтом у символов разная ширина, разное межстрочное расстояние, разный масштаб.
CC>И? Всё что тебе тут надо — GetTextExtentPoint32W и GetTextExtentExPointW
CC>Системный рендерер всё расчёты сделает за тебя.
Все рассчеты он за меня не сделает. И алгоритмы при этом заметно усложняется. Я уж не говорю о том, что GetTextExtent тормозной аж пипец, так что его результаты надо активно кешировать иначе будут те самые тормоза, с которыми ты сражаешься.
НС>> Кроме этого нужно учитывать попиксельный клиппинг
CC>Поскольку всё равно рисуешь в Bitmap по размеру viewport то достаточно посимвольного через GetTextExtentExPointW, всё остальное за тебя обрежет GDI renderer при вызове TextOutW.
Он, конечно, обрежет. Но будут те самые тормоза, с которыми ты сражаешься.
НС>> подавление фликеринга при скроллинге
CC>Это ж вообще азбука!
Это не азбука, а конкретне, в 2022 году довольно специфические навыки, требующие соответствующего спеца. С чего, собственно, разговор и начался.
CC>BitBlt буфера, куда отрисован viewport уже очень давно не фликерит.
А теперь вспоминаем про клиппинг. На который, конечно, можно забить, но будут те самые тормоза, с которыми ты сражаешься.
НС>> отсутствие аппаратного курсора
CC>А в чём проблема нарисовать свой через банальный BitBlt?
В том что это надо делать.
НС>> поддержку мыши с пиксельными координатами и т.д.
CC>Да не проблема жеж вообще!
Да оно все не проблема, только в итоге набирается большая куча весьма специфического кода, который надо написать.
CC>Потом выясняешь внутри строки символьное положение через GetTextExtentExPointW
... который тормозит ... Ну ты понял.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>