我要在CDC上写很多的字,而且是对每个字都有特殊的矩形范围限定的。请问用什么函数比较好?
我用过DrawText,画出来的效果很好,但很慢写多了(100个矩形范围)刷新速度很慢。

解决方案 »

  1.   

    就用DrawText,刷新速度慢应该是你的程序效率问题,请先创建内存DC,在内存DC上面绘制会非常快,然后拷贝到视图DC即可。根据,我的经验,100个矩形根本不会有什么影响 。
      

  2.   

    楼上两位
    我已经使用了双倍缓冲,在内存写,我把写word的那个注掉就快很多,不注掉就慢
    代码:
    //写上文字
    void CTableClass::DrawWords(CDC* pDC,const CString& str,CRect& rc,int align,COLORREF color)
    { pDC->SetTextColor(color);
    pDC->SetBkMode(TRANSPARENT); 

    if(align==ALIGN_MID_INT)
    pDC->DrawText(str,rc,DT_VCENTER|DT_SINGLELINE|DT_CENTER|DT_END_ELLIPSIS);
    else if(align==ALIGN_RIGHT_INT)
    pDC->DrawText(str,rc,DT_VCENTER|DT_SINGLELINE|DT_RIGHT|DT_END_ELLIPSIS);
    else
    pDC->DrawText(str,rc,DT_VCENTER|DT_SINGLELINE|DT_LEFT|DT_END_ELLIPSIS);

    }
      

  3.   

    我指的刷新速度是:
    在我的程序视图上面,我随便拿来一个其它的小窗口,然后拖着这个小窗口不断移动(好比不断除非ondraw事件)结果没有写文字的快,写上文字的慢很多,出现延迟严重