首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

gdiplus中的字体有关问题

2012-03-18 
gdiplus中的字体问题下面这段代码想取得输出文本的长和宽,但是字体为MsSansSerif是取得的场合宽都是0,我发

gdiplus中的字体问题
下面这段代码想取得输出文本的长和宽,但是字体为Ms   Sans   Serif是取得的场合宽都是0,我发誓:我的系统中有这种字体,但是如果是其他的字体,比如“微软雅黑”, "宋体 ",这些都是可以的,除了Ms   Sans   Serif外,其他的一些字体也是取得的长和宽也是0,请问为什么?

var
    afontFamily:   TGPFontFamily;
    afont:   TGPFont;
    g:TGPGraphics;
    Rect:TGPRectF;
begin
    afontFamily:=TGPFontFamily.Create( 'MS   Sans   Serif ');
    aFont:=TGPFont.Create(aFontFamily,9,FontStyleRegular,   UnitPixel);
    Rect.X:=0;
    Rect.Y:=0;
    Rect.Width:=0;
    Rect.Height:=0;
    G:=TGPGraphics.Create(Canvas.Handle);
    G.MeasureString( 'Test ',-1,aFont,MakePoint(0.0,0.0),Rect);
    g.Free;
    aFont.Free;
    aFontFamily.Free;
    ShowMessage(Inttostr(trunc(Rect.Width)));
    ShowMessage(Inttostr(trunc(Rect.Height)));
end;


[解决办法]
其为设备字体,GDI+不支持,同类还有MS Serif、Roman、System等。
请看Delphi5开发人员指南第八章第八节
[解决办法]
这个问题可以解决的,将:
afontFamily:=TGPFontFamily.Create( 'MS Sans Serif ');
改为:
afontFamily := TGPFontFamily.GenericSansSerif;

热点排行