/// gdi獲得字型寬度的方法
cclientdc dc(this);
cfont font;
//requested font height in tenths of a point.
//for instance, pass 120 to request a 12-point font.)
//由上面解釋可知,120這個引數是取其1/10為作為字型大小,
//不過實際中計算中文時
,發現比例為11:1,這個有待進一步研究
font.createpointfont(120, _text("arial"));
dc.selectobject(font);
csize size= dc.gettextextent(_text("字型大小"));/// 這是以point(點)為單位的計算方法
int ndpix = dc.getdevicecaps(logpixelsx);/// x座標每英吋的點數 dot per inch
int ndpiy = dc.getdevicecaps(logpixelsy);/// y座標每英吋的點數 dot per inch
/// point(點) 轉化為 pixel(畫素)
int textwidth = dc.gettextextent(_text("字型大小")).cx * 72 / ndpix;
int textheight = dc.gettextextent((_text("字型大小")).cy * 72 / ndpiy;
/// gdiplus獲得字型寬度的方法一
gdiplus::font grfont(_text("arial"), 12);
stringformat stringformat(stringalignmentnear);
lpctstr lpstr = _text("2010text測試文字");
// 接收字型的顯示區域,如寬高
rectf stringrect;
rectf layoutrect(0, 0, 600, 100);
);//獲得字型高度與寬度
stringrect
graphics.measurestring(lpstr, (int)_tcslen(lpstr), &grfont, layoutrect, &stringformat, &stringrect);
實際應用時,我們發現,如果是非中文本串,如字母和數字,用measurestring測量出來的寬度基本正確,
可一旦這個字串中存在中文,用measurestring測量出來的結果就有偏差了。
現改用graphicspath的邊界來處理,測試結果比較精確。
/// gdiplus獲得字型寬度的方法二
sizef gettextbounds(const font& font,const stringformat& strformat,const cstring& sztext)
原文:
GDI 入門(三 GDI 中文字操作)
三 gdi 中文字操作 using system.drawing using system.drawing.drawing2d using system.drawing.text private void button1 click object sender,eventargs e private...
GDI 測算文字繪製範圍
啥也不羅嗦,上 gdiplus solidbrush brush gdiplus color 124,25,28 gdiplus rectf bound size sz hdc hdc gs.gethdc settextcharacterextra hdc,0 settextjustificatio...
7 利用GDI 繪製文字
s 要繪製的字串。它定義字串的文字格式。它確定所繪製文字的顏色和紋理。結構,它指定所繪製文字的左上角。drawstring string s,font font,brush brush,pointf point drawstring string s,font font,brush brush,fl...