• Саня © (28.10.18 14:13) [0]
    Отрисовую текст в ListBox самостоятельно в OnDrawItem.
    Текст каждого Item-a вывожу через TextOut. Для наглядности некоторые слова в строке желательно вывести другим цветом. Для этого нужно выводить текст строки частями, для того чтобы легко было считать использую моноширинный шрифт.
    Позиция части строки другого цвета считается легко, она равна длина от начала  до этой части  * на ширину буквы.

    Но есть в виндовс такая "гадость" как маштаб экрана:
    мелкий - 100% (по умолчанию)
    средний - 125%
    крупный - 150%


    тогда казалось бы просто нужно добавить:
    Round(длина от начала  до этой части  * на ширину буквы * (Screen.PixelsPerInch / 100)).

    Но почему значения Screen.PixelsPerInch не соответствуют?
    мелкий - 100% - PixelsPerInch = 96
    средний - 125% - PixelsPerInch = 120
    крупный - 150% - PixelsPerInch = 144
  • vir (28.10.18 19:38) [1]
    на хабре гдето была статья про масштабирование в разных версиях виндовс

    надо поискать habr.com
  • vir (28.10.18 19:59) [2]
    > vir   (28.10.18 19:38)
    >
    > на хабре гдето была статья про масштабирование в разных версиях виндовс
    >
    > надо поискать habr.com
    вообщем еще всмпомнил, в апи виндовс есть функция получения количества пикселей для любой строки: указываешь строку в pchar и получаешь колво пикселей
Есть новые Нет новых   [118667   +39][b:0][p:0]