共用方式為


格式化文字 (GDI+)

若要將特殊格式設定套用至文字,請初始化 StringFormat 物件,並將該對象的地址傳遞至 Graphics 類別的 DrawString 方法。

若要在矩形中繪製格式化文字,您需要 GraphicsFontFamilyFontRectFStringFormatBrush 物件。

對齊文字

下列範例會在矩形中繪製文字。 每一行文字都會置中(側對邊),而整個文本塊會在矩形中置中(由上至下)。

WCHAR string[] = 
   L"Use StringFormat and RectF objects to center text in a rectangle.";
                       
FontFamily   fontFamily(L"Arial");
Font         font(&fontFamily, 12, FontStyleBold, UnitPoint);
RectF        rectF(30.0f, 10.0f, 120.0f, 140.0f);
StringFormat stringFormat;
SolidBrush   solidBrush(Color(255, 0, 0, 255));

// Center-justify each line of text.
stringFormat.SetAlignment(StringAlignmentCenter);

// Center the block of text (top to bottom) in the rectangle.
stringFormat.SetLineAlignment(StringAlignmentCenter);

graphics.DrawString(string, -1, &font, rectF, &stringFormat, &solidBrush);

Pen pen(Color(255, 0, 0, 0));
graphics.DrawRectangle(&pen, rectF);
            

下圖顯示矩形和置於中央的文字。

包含矩形的視窗螢幕快照,其中包含六行文字,水準置中

上述程式代碼會呼叫 StringFormat 物件的兩種方法:StringFormat::SetAlignmentStringFormat::SetLineAlignmentStringFormat::SetAlignment 的呼叫指定,各行文字都會置中於傳遞至 DrawString 方法的第三個參數所給定的矩形中。 StringFormat::SetLineAlignment 的呼叫 指定文字區塊在矩形中置中(由上至下)。

stringAlignmentCenter值是 stringAlignment 列舉 元素,在 Gdiplusenums.h 中宣告。

設定定位點

您可以透過呼叫 StringFormat::SetTabStops 方法,設定文字的製表位。首先需呼叫 StringFormat 物件,然後將該 StringFormat 物件的地址傳遞至 Graphics 類別的 DrawString 方法。

以下範例會設定製表停駐點為 150、250 和 350。 然後程式代碼會顯示名稱與測試分數的索引標籤式清單。

WCHAR string[150] = 
   L"Name\tTest 1\tTest 2\tTest 3\n";

StringCchCatW(string, 150, L"Joe\t95\t88\t91\n");
StringCchCatW(string, 150, L"Mary\t98\t84\t90\n");
StringCchCatW(string, 150, L"Sam\t42\t76\t98\n");
StringCchCatW(string, 150, L"Jane\t65\t73\t92\n");
                       
FontFamily   fontFamily(L"Courier New");
Font         font(&fontFamily, 12, FontStyleRegular, UnitPoint);
RectF        rectF(10.0f, 10.0f, 450.0f, 100.0f);
StringFormat stringFormat;
SolidBrush   solidBrush(Color(255, 0, 0, 255));
REAL         tabs[] = {150.0f, 100.0f, 100.0f};

stringFormat.SetTabStops(0.0f, 3, tabs);

graphics.DrawString(string, -1, &font, rectF, &stringFormat, &solidBrush);

Pen pen(Color(255, 0, 0, 0));
graphics.DrawRectangle(&pen, rectF);
            

下圖顯示索引標籤文字。

顯示一個包含四列文字的矩形插圖;每欄皆左對齊

上述程式代碼會將三個自變數傳遞給 StringFormat::SetTabStops 方法。 第三個參數是包含製表符偏移量的陣列的位址。 第二個自變數表示該陣列中有三個位移。 傳遞至 StringFormat::SetTabStops 的第一個自變數為 0,表示陣列中的第一個位移是從周框的左邊緣位置 0 測量。

繪製垂直文字

您可以使用 StringFormat 物件來指定文字垂直繪製,而不是水平繪製。

下列範例會將 StringFormatFlagsDirectionVertical 值傳遞給 StringFormat 物件的 StringFormat::SetFormatFlags 方法。 該 StringFormat 物件的位址會傳遞至 Graphics 類別的 DrawString 方法。 值 的 StringFormatFlagsDirectionVertical 字串格式方向垂直StringFormatFlags 列舉中的一個元素,宣告於 Gdiplusenums.h 中。

WCHAR string[] = L"Vertical text";
                     
FontFamily   fontFamily(L"Lucida Console");
Font         font(&fontFamily, 14, FontStyleRegular, UnitPoint);
PointF       pointF(40.0f, 10.0f);
StringFormat stringFormat;
SolidBrush   solidBrush(Color(255, 0, 0, 255));

stringFormat.SetFormatFlags(StringFormatFlagsDirectionVertical);

graphics.DrawString(string, -1, &font, pointF, &stringFormat, &solidBrush);
            

下圖顯示垂直文字。

圖示顯示包含文字的窗口順時針旋轉 90 度