如题!如果有类似的代码请发至[email protected]
有什么好的方法也可以谈谈

解决方案 »

  1.   

    选字体的时候选择TRUETYPE的字体,试试
      

  2.   

    两种可能性:
    1、直接往位图中写字;
    2、内存DC被StretchBlt到窗口DC。应该直接往窗口或兼容DC里输出文本,操作系统会优化字体边缘的。
      

  3.   


    我现在就是在兼容dc里边输出的 用字体“Arial”还好 一用“楷体之类的就不成了”!
    是缩放了,但比例不大!
    这个不行 我是给视频做了一个a叠加字幕 如果做好图片的话 就得在中间调用专业软件了 显然是不行的!
      

  4.   

    drectX上不知道有没有反走样 或平滑显示之类的方法?
      

  5.   

    用GDI+,可以开启防锯齿功能Graphics graphic( dcMemory.GetSafeHdc() );// 设置防锯齿
    graphic.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit); Font myFont(L"宋体", static_cast<float>(6 * dMagnify) ,FontStyleBold );
    PointF origin( static_cast<float>(65 * dMagnify), 6.0f + y0 );
    SolidBrush blackBrush(Color(m_nOpacity, 255, 255, 255));// 输出文字
    CString strText;
    strText.Format( _T(" (%d%% free)"), nPercent );
    LPCWSTR lpcwString = T2W( diskInfo.strDiskName + strText); 
    int nUnicodeLength = wcslen(lpcwString);
    int nANSILength = diskInfo.strDiskName.GetLength() + strText.GetLength();
    graphic.DrawString( lpcwString, wcslen(lpcwString), &myFont, origin, &blackBrush);大致的过程就是这样了
      

  6.   

    显然就是因为缩放操作引起的边缘锯齿,用下面的步骤来操作即可:用3个DC,一个是窗口DC,两个兼容DC(memdc1与窗口DC大小相同、memdc2任意大小)。
    在memdc2上处理需要的操作,但不要输出文字;
    把memdc2缩放贴图到memdc1上(StretchBlt);
    在memdc1上输出文字;
    把memdc1拷贝到窗口DC(BitBlt)。
      

  7.   

    to 9楼,GDI+的防锯齿功能在这种情况下也无能为力,一旦文本画进了DC,只要再把DC缩放贴到其它DC上还是会有锯齿。
      

  8.   

    晕 那么多类型转换 一个头二个大了!呵呵 开玩笑 我仔细看看 GDI+还没用过!
      

  9.   

    to jameshooo 
    为什么要创建2个兼容DC呢?能给我讲解一下吗?谢谢先!
      

  10.   

    只要不缩放,你的字体将显示得很好。创建2个兼容DC的原因就是为了隔离图片和文字,因为图片需要缩放,但文字缩放后一定会失真(其实图片也会失真),所以把要缩放的内容放入一个DC,不缩放的内容放入另一个DC。