我现在是利用双缓冲来解决试图闪烁的问题!
我现在是在内存中创建一个位图来做的!我在位图上用textout输出了文字,但我感觉好像是由于位图本身就是一个单元一个单元的,所以显示出来的字有锯齿状,不太连贯,清楚。
1。如果还用位图,文字显示应该怎么解决!
2。利用双缓冲,如果我不加载位图,还可以加在什么到内存中,在上面写字!
请大家详细给与指导!
谢谢!

解决方案 »

  1.   

    文字不清除,可和你用的字体有关系。你换一种字体试试。至于其他方式你可以试试GDI+
    在www.codeproject.com的GDI+项 里有很好的double_buffer的例子,你可以看看。
      

  2.   

    请参考:GetGlyphOutline 函数
      

  3.   

    GetGlyphOutline 
    这个函数怎么用牙!
      

  4.   

    我前一阶段学习direct x的时候用到这个双缓冲
    双缓冲是两个表面
    一个主表面还有一个与他联系的表面
    当然可以定义三缓冲等,只要有足够的表面与主表面联系但是在表面上写字我没用过,只知道在上面加位图另外,创建表面的时候可以指定创建的位置
    内存或者是显存
      

  5.   

    edwardsoft(起云)
    能不能把你下载的发给我啊。
    我下了, 搞了半天出错呢?[email protected]
      

  6.   

    到底怎么做呀、!用GDI往内存中写!
    就能保证字体真实吗?
    如果还是写在位图上,我觉得还是不行呀!
      

  7.   

    CDC MemDC; //首先定义一个显示设备对象
    CBitmap MemBitmap;//定义一个位图对象//随后建立与屏幕显示兼容的内存显示设备
    MemDC.CreateCompatibleDC(NULL);
    //这时还不能绘图,因为没有地方画 ^_^
    //下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小
    MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
     
    //将位图选入到内存显示设备中
    //只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
    CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);//先用背景色将位图清除干净,这里我用的是白色作为背景
    //你也可以用自己应该用的颜色
    MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));//绘图
    MemDC.MoveTo(……);
    MemDC.LineTo(……);//将内存中的图拷贝到屏幕上进行显示
    pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);//绘图完成后的清理
    MemBitmap.DeleteObject();
    MemDC.DeleteDC();上面的注释应该很详尽了,废话就不多说了。
      

  8.   

    我觉得 duyhui(杜)已经说的很清楚了,你既然已经把得到了MemDC,那么自然你就可以用TextOut之类的函数在位图上面写字了啊