请给出详细解释,为什么这样做,照顾小弟初学,谢谢!

解决方案 »

  1.   

    HRESULT SetColorKey(
      DWORD dwFlags,             
      LPDDCOLORKEY lpDDColorKey  
    );
    dwFlags可以添DDCKEY_SRCBLT,在blt操作中代表源surface中的这种颜色不要拷贝到目地surface中(正是我们要的)。
    lpDDColorKey是一个预先添好的DDCOLORKEY结构的地址,这个结构由两个DWORD组成,代表一个颜色范围,起的作用是由dwFlag决定的。如果你希望透明的只是一种颜色,比如被景色,那么把这两个DWORD都设成那种颜色就行了。
    在产生了surface之后就可以调这个函数了,然后就可以flip或者bltfast什么的了。
      

  2.   

    [email protected]
    不过,如果已知背景像素为RGB(0,255,0),那么如何通过它产生色键的过程还是不懂啊。我那本书上说,要先将平面左上角一像素读出来,然后通过它来个什么运算(与、移位运算之类),然后再将这个DOWRD值赋给色键的两个成员变量,只是这个过程不懂,程序倒是运行成功了。