我们经常看到的文字为自左向右的顺序,但是在一些图形结构中经常会看到对于横竖坐标的描述,如下图所示,其中的纵轴就需要竖直方向的文本“CountsFrme”
Windows系统内置了许多名称以“@”开头的字集,这些字集有一个共同的特点,即其所包含的文字全都是平躺着的(字头朝左,字底朝右)。如果我们能将这些字旋转一些方向则可以根据自身的需求进行任意角度的文字显示。要使文字发生旋转,我们只需创建一个逻辑字体并设定该逻辑字体的显示角度,再设定其字体名称为一个以“@”开头的字集的名称即可。我们可以采用两种方式创建逻辑字体。
1、用CFont类的成员函数CreateFont直接创建逻辑字体。
2、利用LOGFONT结构,将该结构作为参数调用CFont类的成员函数CreateFontIndirect创建逻辑字体。
下面为根据第一种方法所实现的输出竖直方向的字体的代码,同理也可以实现第二种方法,
CString s;
s=_T("CountsFrame");
CFont myFont;
myFont.CreateFontW (14,5,900,0,10,false,false,false,
DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,DEFAULT_PITCH,_T("@system"));
CFont *pOldFont=pdc->SelectObject (&myFont);
pdc->TextOut(rc.left+10,(rc.top +rc.bottom )/2.0,s);
pdc->SelectObject (pOldFont);