Delphi是具有可視化界面的面向對象編程語言,它以其功能強大、簡便易用等諸多特性深受編程人員的喜愛。在Delphi 6程序中輸出文字時,文字一般是水平或垂直的,雖然可以很容易地改變文字的字體、字號、顏色,但要輸出帶任意傾斜度的文字以達到特殊的顯示效果就有點困難了。
Win32 API即為Windows應用編程接口(Application Programming Interface),所有在Win32平台上運行的應用程序都可以調用這些函數,所以通過調用Win32 API函數可以實現輸出文字的特殊顯示操作。
★實例要求
在窗體的下部有一個按鈕,單擊按鈕後,窗體中間輸出一行文字,如:“中國電腦教育報”,輸出的文字在窗體的中間順時針旋轉。
★重要API函數
將指定的對象選入給定的設備描述表。
function SelectObject(DC:HDC;p2:HGDIOBJ):HGDIOBJ;stdcall;
使用LogFont結構創建一種邏輯字體。
function CreateFontIndirect(const P1:TLogFont):HFont;stdcall;
用當前字體把一個字符串寫到指定位置。
function TextOut(DC: HDC; X, Y: Integer; Str: PChar; Count: Integer): BOOL; stdcall;
從內存中刪除一個對象(本文指邏輯字體)。
function DeleteObject(p1: HGDIOBJ):
BOOL; stdcall;
★字體結構
TLogfont結構是實現文字特殊顯示的關鍵,Windows將根據結構中的內容創建出相應的邏輯字體,在Delphi的Windows.pas中定義的TLogFont結構如下:
type
TLogFontA = packed record
lfHeight: Longint;
//以邏輯單位標定的字體高度,取值可為正負或零。
lfWidth: Longint;
//字體的平均寬度,若指定為0,則系統會自動根據適當的比例自動處理寬度。
lfEscapement: Longint;
//輸出方向與當前坐標系X軸之間的以十分之一度為單位的角度。
lfOrientation: Longint;
//每個字符與當前坐標系X軸之間的以十分之一度為單位的角度。在Windows 95中這個值等同於lfEscpement。
lfWeight: Longint;
//范圍為從0至1000的字體加重程度,400是標准字體,700是加重字體,0表示采用默認值。
lfItalic: Byte; //不為0表示采用斜體字。
lfUnderline: Byte; //不為0表示帶下劃線。
lfStrikeOut: Byte; //不為0表示帶刪除線。
lfCharSet: Byte; //指定字體集。
lfOutPrecision: Byte;
//輸出精度,用於確定對前面一些設定值的精確程度。
lfClipPrecision: Byte;
//裁剪精度,就是去掉圖形中落在視圖以外的部分,有助於提高圖形的處理速度。
lfQuality: Byte; //指定輸出質量。
lfPitchAndFamily: Byte; //指定字體的Pitch和Family。
lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
//指定采用的字體名稱,且LF_FACESIZE=32。
end;