原来使用GDI可以很方便的设置文字的宽度
但是在GDI+中确不行,尝试的代码如下: HDC hdc = pg->GetHDC();
LOGFONT logFont;
logFont.lfHeight = 30;
logFont.lfWidth   = 2;
logFont.lfEscapement = 0;
logFont.lfOrientation = 0;
logFont.lfWeight = FW_BLACK;
logFont.lfItalic = 0;
logFont.lfUnderline = 0;
logFont.lfStrikeOut = 0;
logFont.lfCharSet = GB2312_CHARSET;
logFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
logFont.lfQuality = PROOF_QUALITY;
logFont.lfPitchAndFamily=VARIABLE_PITCH | FF_ROMAN;
_tcscpy(logFont.lfFaceName, m_fFont);
Gdiplus::Font firFont(hdc,&logFont);
pg->ReleaseHDC(hdc);绘制出来的文字还是方块字。
请教牛人,如何用GDI+绘制不是方块字。
PS:最好是直接绘制,不要那种拉伸图片的方法。因为要精确的文字宽度。

解决方案 »

  1.   

    那干脆用GDI得了,一定要用GDI+?
    不过,在你的代码里面,没有看到你设置字体给dc呀!
      

  2.   

    代码是不是应该改改?
    HDC hdc = pg->GetHDC();
                LOGFONT logFont;
    Gdiplus::Font firFont(hdc,&logFont);            logFont.lfHeight = 30;
                logFont.lfWidth   = 2;
                logFont.lfEscapement = 0;
                logFont.lfOrientation = 0;
                logFont.lfWeight = FW_BLACK;
                logFont.lfItalic = 0;
                logFont.lfUnderline = 0;
                logFont.lfStrikeOut = 0;
                logFont.lfCharSet = GB2312_CHARSET;
                logFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
                logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
                logFont.lfQuality = PROOF_QUALITY;
                logFont.lfPitchAndFamily=VARIABLE_PITCH | FF_ROMAN;
                _tcscpy(logFont.lfFaceName, m_fFont);
                            pg->ReleaseHDC(hdc);
      

  3.   

    确实,GDI 是可以的..
      

  4.   

    GOOGLE了很多久,貌似原来就有人发现这个问题。To:fandh
    GDI+是在绘图的时候直接传入字体参数。
    由于原来的绘图都是用GDI+,再改用GDI工作量很大。郁闷中,希望有高手能帮忙解决。