通过使用SetGraphicsMode(GM_ADVANCED)更改DC的坐标系,然后使用
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度)轴,它试图通过反锯齿来“优化”。