如果你不用DirectDraw的话,给你两个建议:
1。用双缓冲。每次刷新屏幕时不要直接在窗口里画,先建一个作为后台缓冲的内存DC,
每次刷新前先在缓冲中把背景前景都画好,再一次BitBlt至窗口的DC
2。如果背景固定,则应好好计算刷新区域,尽量减小每次刷新的非法区,可以有效的
减少闪动。如果配合双缓冲效果更佳。

解决方案 »

  1.   

    用InvalidateRect!!
    如果你想编游戏,强烈建议你去看看DriectX 非常的好啊!!!
       我这里有一段非常好的 游戏代码 用DriectX 编的,简单易懂,给我你的E-MAIL我给你发过去!!保证你看完了 就成大牛牛了。 哈哈哈哈 哈哈 哈哈 
      

  2.   

    用InvalidateRect!!
    如果你想编游戏,强烈建议你去看看DriectX 非常的好啊!!!
       我这里有一段非常好的 游戏代码 用DriectX 编的,简单易懂,给我你的E-MAIL我给你发过去!!保证你看完了 就成大牛牛了。 哈哈哈哈 哈哈 哈哈 
      

  3.   

    用InvalidateRect!!
    如果你想编游戏,强烈建议你去看看DriectX 非常的好啊!!!
       我这里有一段非常好的 游戏代码 用DriectX 编的,简单易懂,给我你的E-MAIL我给你发过去!!保证你看完了 就成大牛牛了。 哈哈哈哈 哈哈 哈哈 
      

  4.   

    Robert2001,可不可以给我一份?
    [email protected] 先谢了!
      

  5.   

    to Robert2001,
    我也要一份,[email protected]
    我也先谢谢了。
      

  6.   

    写简单的小游戏,用DX简直是浪费,
    学习DX一个月都不一定能搞定!
    我建议不要使用GDI的绘图,自己建一
    后屏buffer,每次刷新时,对buffer
    写数据或裁减,全部完成后生成位图,再
    往DC画,编程的自由度就和dos下一样了。
     
      

  7.   

    一开始只要学 DirectDraw 就行了,其它的不必管。
      

  8.   

    #include <stdio.h>
    #include <process.h>FILE *stream;void main( void )
    {
       int    i = 10;
       double fp = 1.5;
       char   s[] = "this is a string";
       char   c = '\n';   stream = fopen( "fprintf.out", "w" );
       fprintf( stream, "%s%c", s, c );
       fprintf( stream, "%d\n", i );
       fprintf( stream, "%f\n", fp );
       fclose( stream );
       system( "type fprintf.out" );
    }
      

  9.   

    DX8的SDK我下了还没看,不知道有什么新东西没有,好久没做图形图象处理了,都快忘了。
    最近一直在用JAVA,VC也忘得差不多了。:)
    To lwd2k: 
        如果你在用DX,这个问题可以用ColorKey来解决;如果你是在用SDK或MFC的话,我记得
    有一个扩展的绘图函数(就是函数名后面有个Ex的)可以设置透明色的,应该在位图处理函
    数族里的,查查MSDN吧。
        至于刷屏的问题,casanova的意见很对,不管是用GDI还是用DX,最好还是采用多层缓
    冲的方式,可以采用多线程的来提高处理的效率,将游戏算法逻辑和图形算法逻辑分开会好
    一些。
      

  10.   

    TransparentBlt()
      我使过这个函数!没有问题!
      就是你必须自己把他导入!
     其他的方法 我给你发的 代码上有! 
      

  11.   

    用这个也行!
    MaskBlt() 
      

  12.   

    我的经验可能有用:先有创意,再研究DirectX搞图象。比如
    我的游戏“北京浮生记”就是用Visual C++ 6.0编的,不到10天现在下载都突破900了,就是因为创意不错,可玩性高。游戏在本网站:http://www.csdn.net/cnshare/soft/soft5079.shtm
    但是我想向大家请教DirectX的问题,哪位能帮忙?因为我的游戏图象方面实在有点对不住玩家,嘿嘿。
      

  13.   

    to angband:
    10天突破900!?好厉害,除了创意不错,可玩性高之外,我想宣传工作力度大,影响面广也是大侠的宝贵经验。
    我觉得我的游戏可玩性也很不错呀,是用DirectX的,
    欢迎赏光。
    http://www.csdn.net/cnshare/soft/soft4776.shtm
      

  14.   

    freeclick兄:
         有道理,如何使用呢?
      

  15.   

    Robert2001兄:
      you said that 我这里有一段非常好的 游戏代码 用DriectX 编的,简单易懂,给我你的E-MAIL我给你发过去!!保证你看完了 就成大牛牛了.
     
      can you also e-mail the source code to me?
    thank you very much.
    my email is :   [email protected]
      

  16.   

    the background update shouldn't be called by ontimer.
    it should be in the messageloop:
    while(peekmessage(....))
    {
      translatemessage....
      UPDATEEVERYTHIONG();
    }
    void UPDATEEVERYTHIONG()
    {
       if(background_need_redraw)
       {
        draw_backgroud;
       }
        draw_charactor;
    }BTW, the background shouldn't move too fast,even your game is a 2d game.
      

  17.   

    blaise:
       but,how to use it in MFC?
      

  18.   

    同志们:
        去找找《WINDOWS高性能图象编程》这本书。好象是电子工业出版社的。介绍了结合MFC用DirectDraw编程,另有DirectInput的示例,如果C++功力足够,使用附带光盘提供的模板,简单游戏几天足够搞定!相信我,没错的!
    PS:可惜,翻译不怎么样,有些Chinglish,参考MSDN&&自己猜吧!