SetWorldTransform () и вращение шрифта - PullRequest
1 голос
/ 06 января 2010

Я пытаюсь отобразить текст на элементе управления Windows, повернутый на 90 градусов, чтобы он читался «снизу вверх», так сказать; в основном это метка на оси Y графика.

Я получил мой текст для вертикального отображения, изменив мою систему координат для DC с помощью SetGraphicsMode (GM_ADVANCED), а затем с помощью

XFORM transform;
const double angle = 90 * (boost::math::constants::pi<double>() / 180);
transform.eM11 = (FLOAT)cos(angle);
transform.eM12 = (FLOAT)(-sin(angle));
transform.eM21 = (FLOAT)sin(angle);
transform.eM22 = (FLOAT)cos(angle);
transform.eDx = 0.0;
transform.eDy = 0.0;
dc.SetWorldTransform(&transform);

Теперь, когда я запускаю свою программу, повернутый текст выглядит иначе, чем тот же текст, когда он отображается «нормально» (горизонтально). Я попытался с фиксированным (системным) шрифтом и шрифтом WinXP по умолчанию. Системный шрифт выглядит сглаженным, а другой выглядит почти так, как будто он рисуется на 1-пиксельный шрифт меньшего размера, чем горизонтальная версия, хотя они нарисованы с использованием того же DC и без каких-либо изменений шрифта между ними. Похоже, что Windows обнаруживает, что я рисую шрифт не вдоль нормальной (0 градусов) оси и что она пытается «оптимизировать» с помощью сглаживания.

Теперь я не хочу ничего этого. Я просто хочу, чтобы текст, который я рисую горизонтально, рисовался точно так же, за исключением поворота на 90 градусов, что возможно, поскольку это поворот точно на 90 градусов. Кто-нибудь знает, что происходит, и могу ли я легко изменить это, чтобы работать, как я хочу? Я не хотел бы пройти через все эти неприятности и обнаружить, что мне придется прибегнуть к рендерингу за пределами экрана, к повороту с использованием простого поворота по пикселям и необходимости добавлять это в свой контроль :(

1 Ответ

1 голос
/ 06 января 2010

Вы пытались установить параметры nEscapement и nOrientation при создании шрифта вместо использования SetWorldTransform? Подробнее см. CreateFont.

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