kazalex>>Ещё прикол в том, что если будешь использовать ExTextOut/ExtUTF8Out для управления межсимвольными интервалами
я специально сделал раззбивку и рисование посимвольно, чтобы небыло проблем с межбуквенным интервалом. Нераз наблюдал, как в программах оперирующих строками или словами ширина текстов немного играет в зависимости от масштаба изображения.
Pavia>>Только рисуется он в Path, а не в Bitmap. Далее крутиться и растягиваете как хотите
Взял на заметку, спасибо. Похоже это единственный способ приделать "свободный" наклон к шрифтам. Плохо только что патчи не реализованы под линуксом
>>И лучше кэшировать не по одной букве, а словами.
хз. букв в алфовите мало и они постоянно повторяются, слов в языке много и не факт что вообще будут повторения
>>Вместо GDI можно использовать кросплатформенную библиотеку font_freetype
векторное представление шрифта у меня есть, получаю с помощью lazfreetype - тут пока проблем нет никаких
>>Интел в своё время выкладывала алгоритмы умножения матриц. 30 тактов было на PIII, так что у вас не очень оптимально
До этого тоже дело дойдет, но пока я множу примитивно на паскале. Пока хватает простора для алгоритмических оптимизаций.
ChebСпасибо!
Странно что виснет, отрисовка там в онпаинте и если он по какойто причине не приходит постоянно, то виснуть неболжно.
Первые результаты. На картинке оба рендера одновременно, крупный - мой "треугольный", мелкий - системный, пока и шрифт не тот, размеры не те и наклона нет, но уже хоть чтот0)) Сразу полезли проблемы - отсутствие реализации SetTextAlign в линуксе и странный сдвиг "системных" символов - похоже на descent из ttf metrics
http://i.stack.imgur.com/crGOe.pngДобавлено спустя 21 час 10 минут 53 секунды:Вроде нашелся способ меня устраивающий - позволяющий и косить, и наклонять и масштабировать без пересоздания шрифта:
- Код: Выделить всё
function SetGraphicsMode(hdc:HDC; iMode:longint):longint; external 'gdi32' name 'SetGraphicsMode';
function SetWorldTransform(_para1:HDC; var _para2:XFORM):WINBOOL; external 'gdi32' name 'SetWorldTransform';
Правда видовс онли - в lclintf этого добра нет((, но думаю в gtk и Qt должны быть аналогичные механизмы - если кто знает, подскажите