-
столкнулся со странностью.
рисую я значит на канвасе. много и со вкусом. в основном текст.
так вот такая вещь. у тех людей, у кого в настройках экрана стоит "масштаб" не такой как у меня, то моя программа рисует шрифты не так как задумывалось!
я так понимаю дело в другом разрешении экрана. То есть у человека стоит другое количество pixelsperinch. У него просто монитор большой очень, вот он так и сделал.
В VCL я видел свойство PixelsPerInch и даже пользовался им когда игрался с выводом на принтер.
Я подумал что в целях экономии кода канвас создается с системными настройками по умолчанию и решением было бы принудительное указания некоего фиксированного pixelsperinch.
А где оно в KOL?
или мне придется ручками переделывать размер шрифта ориентируясь на некое "глобальное" разрешение? и кстати где его взять?
-
> кстати где его взять?
GetDeviceCaps(..., LOGPIXELSY)
-
В KOL размер шрифта указывается в пикселах, в VCL - в пунктах. Если нужно чтобы выглядело одинаково используйте тоже пункты, ну и преобразуйте как велит микрософт: "nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELS), 72)" (LOGPIXEL = GetDeviceCaps(DC, LOGPIXELSY))
-
хмм. если задавать размер шрифта отрицательными числами, то его высота выражается в пунктах. может быть это мое решение? задавать fonthеight не 12, а скажем -12?
|