Я пытаюсь отобразить текст в элементе управления Windows, повернутый на 90 градусов, чтобы он читал «снизу вверх» так сказать; в основном это метка на оси Y графа.SetWorldTransform() и поворот шрифта
Я получил свой текст для отображения по вертикали, изменяя свою систему координат для постоянного тока с помощью 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);
Теперь, когда я запускаю свою программу, повернутый текст выглядит отличается от того же текст, когда он отображается «обычно» (по горизонтали). Я пробовал использовать шрифт фиксированной ширины (system) и шрифт WinXP по умолчанию. Системный шрифт выглядит сглаживающим, а другой выглядит почти так, как если бы он рисовался на 1 пикселе меньшего шрифта, чем горизонтальная версия, хотя они рисовались с использованием одного и того же DC и без изменений шрифта между ними. Похоже, что Windows обнаруживает, что я рисую шрифт не вдоль обычной (0 градусов) оси и что он пытается «оптимизировать» с помощью сглаживания.
Теперь я не хочу этого. Я просто хочу, чтобы тот же текст, который я рисую горизонтально, должен быть нарисован точно таким же, за исключением поворота на 90 градусов, что возможно, так как это вращение ровно на 90 градусов. Кто-нибудь знает, что происходит, и могу ли я легко изменить это, чтобы работать, как я хочу? Мне бы очень хотелось, чтобы я пережил все эти проблемы и выяснил, что мне придется прибегать к рендерингу к растровому изображению вне экрана, вращая его, используя простую попиксельную ротацию и вынуждая бить это в мой контроль :(