一、引言
在Delphi開發(fā)環(huán)境中,文字的輸出效果一般都是頭上腳下的"正統(tǒng)"字符,如何輸出帶有一定傾斜角度的文字以達到特殊的顯示效果呢?筆者在制作公章輔助設(shè)計軟件過程中,通過Windows圖形設(shè)備接口函數(shù)實現(xiàn)了文字呈輻射狀分布的功能。
Windows圖形設(shè)備接口(Graphics Device Interface)是Windows系統(tǒng)中的圖形核心模塊,以GDI.EXE形式提供給開發(fā)者使用。Windows中的圖形基本上是由GDI.EXE中的函數(shù)來處理的,它的主要特點是在輸出設(shè)備上支持與設(shè)備無關(guān)的圖形。在GDI函數(shù)中,文本亦被視為一種圖形對象,但并非簡單的幾何方式繪制,因為文本的輸出涉及到字體。
根據(jù)Windows中字體所用的技術(shù)可以分為3類字體:光柵字體,矢量字體和TrueType字體。其中,True Type字體的主要優(yōu)點之一是可被任意放大或旋轉(zhuǎn),在任何尺寸上,都可以達到較為滿意的顯示效果,尤其,其允許在顯示器和打印機上使用相同的字體。Windows為應(yīng)用程序之所以能夠提供設(shè)備無關(guān)性是通過采用讓應(yīng)用程序創(chuàng)建邏輯對象從而使用物理對象的方法實現(xiàn)的,同樣,對于字體的使用也是一樣的:應(yīng)用程序在使用字體時,首先創(chuàng)建邏輯字體,以便Windows從設(shè)備中選擇一種與之匹配的物理字體,從而達到較為準確的輸出效果。
二、內(nèi)容
使用Windows GDI函數(shù)實現(xiàn)文字的傾斜效果的基本步驟如下:
1.取得設(shè)備描述表或圖形設(shè)備的句柄: HDC GetDc(Thandle AWinHandle);
2.創(chuàng)建邏輯字體并設(shè)置文字的傾斜度: HFont CreateFontIndirect(LogFont Far *Iplf),
其中,Iplf為tagLogFont結(jié)構(gòu)體,通過設(shè)置其lfEscapement可設(shè)置文字的傾斜度(為實際度數(shù)的10倍),例如:0度-正常字體,450度-左上45度傾斜,900度-正向左,等。
3.將邏輯字體選入設(shè)備列表,從而,Windows選擇與之匹配的物理字體,并且新的字體取代舊的字體:
HGDIOBJ SelectObject(HDC hdc,HGDIOBJ hgdiobj);
注:在此之前現(xiàn)
4.使用當(dāng)前設(shè)備的字體進行文字輸出: BOOL TextOut(HDC hdc, int PosX, int PosY, LPCTSTR OutStr, int StrLength);
5.釋放不再使用的圖形對象(這里為邏輯字體): BOOL DeleteObject(HGDIOBJ hObject);
    
   
              
              在Delphi開發(fā)環(huán)境中,文字的輸出效果一般都是頭上腳下的"正統(tǒng)"字符,如何輸出帶有一定傾斜角度的文字以達到特殊的顯示效果呢?筆者在制作公章輔助設(shè)計軟件過程中,通過Windows圖形設(shè)備接口函數(shù)實現(xiàn)了文字呈輻射狀分布的功能。
Windows圖形設(shè)備接口(Graphics Device Interface)是Windows系統(tǒng)中的圖形核心模塊,以GDI.EXE形式提供給開發(fā)者使用。Windows中的圖形基本上是由GDI.EXE中的函數(shù)來處理的,它的主要特點是在輸出設(shè)備上支持與設(shè)備無關(guān)的圖形。在GDI函數(shù)中,文本亦被視為一種圖形對象,但并非簡單的幾何方式繪制,因為文本的輸出涉及到字體。
根據(jù)Windows中字體所用的技術(shù)可以分為3類字體:光柵字體,矢量字體和TrueType字體。其中,True Type字體的主要優(yōu)點之一是可被任意放大或旋轉(zhuǎn),在任何尺寸上,都可以達到較為滿意的顯示效果,尤其,其允許在顯示器和打印機上使用相同的字體。Windows為應(yīng)用程序之所以能夠提供設(shè)備無關(guān)性是通過采用讓應(yīng)用程序創(chuàng)建邏輯對象從而使用物理對象的方法實現(xiàn)的,同樣,對于字體的使用也是一樣的:應(yīng)用程序在使用字體時,首先創(chuàng)建邏輯字體,以便Windows從設(shè)備中選擇一種與之匹配的物理字體,從而達到較為準確的輸出效果。
二、內(nèi)容
使用Windows GDI函數(shù)實現(xiàn)文字的傾斜效果的基本步驟如下:
1.取得設(shè)備描述表或圖形設(shè)備的句柄: HDC GetDc(Thandle AWinHandle);
2.創(chuàng)建邏輯字體并設(shè)置文字的傾斜度: HFont CreateFontIndirect(LogFont Far *Iplf),
其中,Iplf為tagLogFont結(jié)構(gòu)體,通過設(shè)置其lfEscapement可設(shè)置文字的傾斜度(為實際度數(shù)的10倍),例如:0度-正常字體,450度-左上45度傾斜,900度-正向左,等。
3.將邏輯字體選入設(shè)備列表,從而,Windows選擇與之匹配的物理字體,并且新的字體取代舊的字體:
HGDIOBJ SelectObject(HDC hdc,HGDIOBJ hgdiobj);
注:在此之前現(xiàn)
4.使用當(dāng)前設(shè)備的字體進行文字輸出: BOOL TextOut(HDC hdc, int PosX, int PosY, LPCTSTR OutStr, int StrLength);
5.釋放不再使用的圖形對象(這里為邏輯字體): BOOL DeleteObject(HGDIOBJ hObject);

