2010-01-06 3 views
1

Я пытаюсь отобразить текст в элементе управления 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 градусов. Кто-нибудь знает, что происходит, и могу ли я легко изменить это, чтобы работать, как я хочу? Мне бы очень хотелось, чтобы я пережил все эти проблемы и выяснил, что мне придется прибегать к рендерингу к растровому изображению вне экрана, вращая его, используя простую попиксельную ротацию и вынуждая бить это в мой контроль :(

ответ

1

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

Смежные вопросы