标  题: 如何显示旋转文本                                 
发信人: Pacific (无情~~~Nolove), 信区: VisualC
发信站: BBS 水木清华站 (Fri Oct 16 17:22:54 1998)


    只要用户使用TrueType或者GDI笔或字体就可以显示旋转文本(有些硬件设备也         
支持旋转光栅字体)。LOGFONT结构中的ifEscapement成员指定了文本行和x轴的角         
度,角度的单位是十分之一度而不是度,例如,ifEscapement为450表示字体旋转          
45度。为确保所有的字体沿坐标系统的同一方向旋转,一定要设置ifEscapement成         
员的CLIP_LH_ANGLES位,否则,有些字体可能反向旋转。下例使用了14点Arial字体        
每间隔15度画一个串。                                                             
                                                                                 
void CSampleView:: OnDraw (CDC* pDC)                                             
{                                                                                
     //Determine the size of the window.                                         
     CRect rcClient;                                                             
     GetClientRect (rcClient);                                                   
                                                                                 
     //Create sample string.                                                     
     CString str (_T ("Wheeee...I am rotating!"));                            
     //Draw transparent, red text.                                               
     pDC->SetBkMode (TRANSPARENT);                                               
     pDC->SetTextColor (RGB (255,0,0));                                          
     CFont font;           //font object                                         
     LOGFONT stFont;    //font definition                                        
     //Set font attributes that will not change.                                 
     memset (&stFont, 0, sizeof (LOGFONT));                                      
     stFont.ifheight=MulDiv (14, -pDC->GetDeviceCaps (LOGPIXELSY), 72);          
     stFont.ifWeight=FW_NORMAL;                                                  
     stFont.ifClipPrecision=LCIP_LH_ANGLES;                                      
     strcpy (stFont.lfFaceName, "Arial");                                        
                                                                                 
     //Draw text at 15degree intervals.                                          
     for (int nAngle=0; nAngle<3600; nAngle+=150)                                
{                                                                                
         //Specify new angle.                                                    
         stFont.lfEscapement=nAngle;                                             
                                                                                 
         //Create and select font into dc.                                       
         font.CreateFontIndirect (&stfont);                                      
         CFont* pOldFont=pDC->SelectObject (&font);                              
                                                                                 
         //Draw the text.                                                        
         pDC->SelectObject (pOldFont);                                           
         font.DelectObjext ();                                                   
     }                                                                           
}                                                                                
                                                                                 

--
        老鸟有交待,中鸟要等待,菜鸟要忍耐。
        老鸟级功夫:吹牛、聊天、玩MUD 、发呆。
        中鸟级功夫:睡觉、灌水、玩游戏、NT&VC。
        菜鸟级功夫:学习、泡妞、玩篮球、And so on

        My E-Mail: Nolove@263.net

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: yazhou.bbs@bbs.net.t]
※ 修改:.fzx 于 Aug  9 16:51:22 修改本文.[FROM: heart.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:202.190毫秒