如有人能回答此问题,赠送真正的中文API大全一套,绝对真正的大全,不是网上叫windows api大全chm那本,那本虽然叫大全但大部分函数都没有,我保证我手里这本每一个函数都可以查到.问题如下:微软新推出的据说将要取代GDI图形函数的GDI+可能有缺陷,设置不了字体宽度!!!LOGFONTA logfonta;
logfonta.lfHeight=100;
logfonta.lfWidth=30;//字体宽度
logfonta.lfEscapement=0;
logfonta.lfOrientation=0;
logfonta.lfWeight=0;
logfonta.lfItalic=0;
logfonta.lfUnderline=0;
logfonta.lfStrikeOut=0;
logfonta.lfCharSet=0;
logfonta.lfOutPrecision=0;
logfonta.lfClipPrecision=0;
logfonta.lfQuality=0;
logfonta.lfPitchAndFamily=0;
strcpy(logfonta.lfFaceName,"宋体");HFONT hfont=CreateFontIndirect(&logfonta);//gdi方法
用了上面的结构,如用gdi,上面的logfonta可以设置宽度,改用DGI+
Font font(hdc,&logfonta);
只有字体、加粗、加划线是好使的.不会是GDI越出越差了吧???

解决方案 »

  1.   

    strcpy(logfonta.lfFaceName,_T("宋体")); // 是不是因为这个?cygroup#tom.com  # to @ 谢谢! ;)
      

  2.   

    API看MSDN足够了至于你这个问题,可能是和字体有关,大概只有部分类型的字体支持调整宽度
      

  3.   

    不是strcpy(logfonta.lfFaceName,_T("宋体")); 的问题,在GDI中使用这个结构没有问题.也就是说这个结构没有任何问题.
    也不是只有部分类型的字体支持调整宽度,因为在GDI中每种字体都可以调整宽度,而同样用这个结构GDI+就不行,而且本人并未查到GDI+有其它方法设字宽.想与大家讨论的是将来的GDI+(据说要取代GDI)是否连字宽都不支持,那还谈什么取代GDI呀!!至于楼上说查API用MSDN当然是够了,不过我想不是每个人英文和中文都看着一样舒服吧,遇到一个新函数我感觉还是看中文的舒服一些,况且有这种好东东为什么不要呢?
      

  4.   

    GDI+并不是用来取代GDI的吧,有些功能GDI+并不能代替GDI。
      

  5.   

    基于GDI+技术的方便\快捷和高效率,国内已有不少程序开发人员在程序设计中开始使用GDI+技术来取代传统的GDI编程.
    这是我的DGI+教材上的一句话,并且经过我的验证,它确实不错,例如直接支持文字的透明,过度色,或图形格式的增加例如jpeg\tif\png等.
    另外我在网上也见到过,GDI+将是GDI的新版本的说法,我理解会不会就像C++和C的关系.但我现在最想知道的还是怎样设置字宽这个初级问题,实在让我太头痛了,我的软件其它部分都完成了就差这一个把整个软件的完工日期给卡住了,希望哪位好心人能帮帮我!!!
      

  6.   

    A LOGFONTA structure is a GDI structure. GDI+ uses only some of the attributes contained in this structure.
      

  7.   

    楼上的是指GDI+只使用这个结构的一部分吗?那如何设置字宽呢?还有其它方法了吗,恭敬的等待着您的回答
      

  8.   

    建议绘制文本这一块还是采用gdi,其他的如图形图象处理部分采用gdi+.
      

  9.   

    谢谢楼上的,不过整个程序都已经写完了,用的GDI+处理文字部分,因为当时看中了它的方便的文字半透明和设置以毫米为单位打印功能,整个程序如果文字部分全部重新用GDI重写,我会疯掉的麻烦哪位好心人帮一下吧.
      

  10.   

    不是吧!!这里是csdn呀,提出问题都一周了,没人能回答吗?
      

  11.   

    幫頂。
    中文API大全一套能寄一份給我麼? [email protected]
      

  12.   

    MSDN:A LOGFONTA(/W) structure is a GDI structure. GDI+ uses only some of the attributes contained in this structure.GDI+虽使用起来较为方便,但功能有限。可用以下方法适一下:
    HFONT hFont=CreateFont(iHeight, iWidth, 0,0, FW_NORMAL, 
      0,0,0,
      DEFAULT_CHARSET,
      OUT_TT_PRECIS,
      CLIP_DEFAULT_PRECIS,
      DEFAULT_QUANTITY,
      DEFAULT_PITCH | FF_DONTCARE,
      TEXT("宋体"));Font font(hdc, hFont);
      

  13.   

    首先谢谢楼上的朋友,不过经过改完验证,这种方法仍不好使,函数如下:void show(HDC hdc)
    {
    HFONT hFont;
    hFont=CreateFont(100/*高度*/, 10/*宽度*/, 0,0, FW_NORMAL, 
    0,0,0,
    DEFAULT_CHARSET,
    OUT_TT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    OUT_DEFAULT_PRECIS,
    DEFAULT_PITCH | FF_DONTCARE,
    TEXT("宋体"));
    SolidBrush brush(Color(255,0,0,255));
    PointF pointF(5,5);
    Font font(hdc,hFont);
    Graphics graphics(hdc);
    graphics.DrawString(L"中国人是龙的子孙",-1,&font,pointF,&brush);
    }
    输出的文字依然无法改变字宽,这种方法我在最初用那个字体结构时也同时用过此方法试过,不好使,今天看到楼上朋友的提醒又试了一次不过仍不好使,不知道GDI+用何种方法设字宽,但感觉上应该是可以设置的,要不然这个简单的一个要求都达不到,那GDI+的出现就真的让人怀疑其出现的意义了,或者可以说这难道真的是微软产品中的一个缺陷吗?如果是缺陷也太大点了吧!微软竟会犯这种错误!!!!!!!!!!!!!!!!!!!!!!!!希望csdn中的高手们帮助解答此问题!!!!!!!!!!!!!!!!!
    希望csdn中的高手们帮助解答此问题!!!!!!!!!!!!!!!!!
    希望csdn中的高手们帮助解答此问题!!!!!!!!!!!!!!!!!如能有高手解答此问题,本人将真诚的向您表示感谢!
      

  14.   

    紧缩或拉伸字体显示时,仅通过修改字体宽度并不能完全达到预期效果。系统会选择一个它所支持的最接近的模式(而不是自己指定的宽宽)来输出。WIN2K以上操作系统用GDI方式实现任意比例的拉伸、扭曲和任意角度的旋转,一般通过SetGraphicsMode(hdc, GM_ADVANCED);和SetWorldTransform(hdc, &xForm);来实现。GDI+下没试过,你可以查一下是否有类似的方法。