Рисование закрашенного текста шрифтами True Type - PullRequest
0 голосов
/ 20 марта 2011

Прямо сейчас в моей игре я рисую настоящие шрифты типа этого:

for(int i = linesSkipped; i <= maxitems + linesSkipped; ++i)
    {
        if(i >= (int)textRows.size())
        {
            break;
        }
        paintargs.graphics()->drawText(AguiPoint(textX - 2,
            textY - 2 + (i * getFont().getLineHeight())),
            textRows[i].c_str(),AguiColor(0,0,0),getFont());

        paintargs.graphics()->drawText(AguiPoint(textX + 2,
            textY + 2 + (i * getFont().getLineHeight())),
            textRows[i].c_str(),AguiColor(0,0,0),getFont());

        paintargs.graphics()->drawText(AguiPoint(textX,
            textY + (i * getFont().getLineHeight())),
            textRows[i].c_str(),AguiColor(255,128,0),getFont());

    }

Поэтому я рисую его со смещением 2, а затем со смещением -1.

Он почти делает то, что я хочу, но верхний правый и нижний левый края все еще не заштрихованы:

enter image description here

Есть ли способ нарисовать его так, чтобы он выглядел как штрихФотошоп?

Спасибо

Ответы [ 3 ]

0 голосов
/ 20 марта 2011

Вам нужно нарисовать текст во всех углах! То, что вы делаете, это рисование в верхнем левом углу и в правом нижнем углу, соответственно X=-2, Y=-2 и X=2, Y=2. Что вам нужно сделать, это нарисовать их в левом нижнем и правом верхнем углу, что будет соответственно X=-2, Y=2 и X=2, Y=-2.

0 голосов
/ 20 марта 2011

Какой API вы используете?Это GDI +?

Вы можете нарисовать контуры в нескольких местах, прежде чем рисовать изнутри:

(x-2, y-2) (x, y-2) (x+2,y-2)
(x-2, y  )          (x+2,y  )
(x-2, y+2) (x, y+2) (x+2,y+2)

Или вы можете увидеть, есть ли в вашем графическом API что-то вроде путей.С помощью путей вы указываете графической библиотеке, что хотите начать путь, затем один раз отрисовываете текст, а затем заканчиваете путь.Как только это будет сделано, вы говорите графической библиотеке «обводить и заполнять» путь.Это самое чистое решение.

0 голосов
/ 20 марта 2011

Если у вас нет средств повлиять на метод рендеринга текста, нарисуйте текст на первом шаге, а обводку - на втором, например, так:но этот лучше всего иллюстрирует, как отображаются штрихи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...