下面用一個簡單的例子來說明在GDI+中如何獲取字符串佔用的寬度和高度
簡單來說就是調用Graphics對象的MeasureString函數,下面是一個簡單的例子
//創建Graphics對象
CPaintDC dc(this);
Graphics gra(dc.m_hDC);
//首先創建字體相關
FontFamily fontFamily(L"Arial"); //字體
Font font(&fontFamily, 30, FontStyleRegular, UnitPixel); //30爲字號,就是文字的大小
PontF pointF(0,0f, 0,0f); //繪畫的x、y座標
WCHAR string[256];
wcscpy(string, L"28:sdf:的"); //字符串
RectF boundRect; //作爲MeasureString的參數,調用MeasureString後會把x、y、高度和寬度填入boundRect裏
gra.MeasureString(string, wcslen(string), &font, pointF, &boundRect);
獲取相關字體的高度還有一個方法,就是調用Font對象的GetHeight()函數,如下
Font font(&fontFamily, 30, FontStyleRegular, UnitPixel);
float height = font.GetHeight(&gra);
主意:GetHeight()獲得的高度跟gra.MeasureString函數獲得的高度是不同的。GetHeight()獲得的高度是該字體剛好的像素高度,而gra.MeasureString獲得的高度是包含該字符串的區域的高度,MSDN的說明是Pointer to a RectF object that receives the rectangle that bounds the string.