GDI+ 如何獲取字符串實際的輸出像素值(高度和寬度)

下面用一個簡單的例子來說明在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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章