SetBkColor,SetTextColor具体是作什么操作的呢?读过图片后使用SetBkColor和SetTextColor设置的颜色在哪里呢?使用BitBlt将一个设过SetBkColor和SetTextColor的位图拷贝到一个单色位图或逆拷贝,SetBkColor和SetTextColor设置的颜色起到了什么作用?
  //我首先用(ha.bmp为一个红底的人物图):
  HDC MemDC = CreateCompatibleDC(0);
  HBITMAP bit = bit(HBITMAP)LoadImage(AfxGetInstanceHandle(),"./pic/ha.bmp",
IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);//ha.bmp为一个红底的人物图
  SelectObject(MemDC,bit);
  //再建一个单色位图:
  HBITMAP mBMP = CreateBitmap(w,h,1,1,NULL);
  HDC     mDC  = CreateCompatibleDC(dc.m_hDC);
  HBITMAP oldmBMP = (HBITMAP)SelectObject(mDC,mBMP);
  //到底是怎么形成一个MemDC(ha.bmp)的掩码位图,即底色为白色,人物为黑色的单色位图. 
  SetBkColor(hDC,RGB(255,0,0));//起到什么作用?是把透明色(RGB(255,0,0))当成背景,除透明色以外的颜色当成前景色,所设的背景是在hDC读的图片(ha.bmp)之下,还是之上?
  //SetTextColor(hDC,RGB(255,255,255);//显示hDC,人物不变,为什么不是白色?
  BitBlt(mDC,0,0,w,h,hDC,0,0,SRCCOPY);//为什么mDC形成一个底色为白色,人物为黑色的单色掩码位图,不是形成一个底色为黑色,人物为白色(或黑色)的单色掩码位图
  //到底是怎么将MemDC变为以黑色为底的人物(人物不变色)图片.
  SetBkColor(MemDC,RGB(0,0,0));//这步有什么作用?
  SetTextColor(MemDC,RGB(255,255,255));//这步有什么作用?
  BitBlt(MemDC,0,0,w,h,mDC,0,0,SRCAND);//怎么"与"的?将MemDC变为以黑色为底的人物(人物不变色)图片.

解决方案 »

  1.   

    搞清楚,SetBkColor和SetTextColor两个函数都是针对文字显示的设置,而不是图像。
    SetBkColor是设置显示文字的背景色,而SetTextColor是设置显示文字的前景色,即文字的颜色。
      

  2.   

    上面什么现象?
     //到底是怎么形成一个MemDC(ha.bmp)的掩码位图,即底色为白色,人物为黑色的单色位图. 
    设置底色。。不能用setBKcolor这样的函数。需要将bmp都设成白色。
    然后贴在缓存上。
    给我留言。我给你个游戏编程的例子。
    其中用了遮照技术。
      

  3.   

    "搞清楚,SetBkColor和SetTextColor两个函数都是针对文字显示的设置,而不是图像。"
    看到这种话,真让人流汗。
    不知道是谁没有搞清楚。Q://到底是怎么将MemDC变为以黑色为底的人物(人物不变色)图片.
      SetBkColor(MemDC,RGB(0,0,0));//这步有什么作用?
    A:
    这步操作强行将位图设为白色,以方便做透明处理。
      

  4.   

    SetBkColor明白了!但SetTextColor和"与"操作还是还是不太明白,前景的面积是显示(ha.bmp除去红底的人物面积)还是整个图片的面积(w*h,以透明色显示其它部分的像素),"与"操作是如何进行的,比如是当作一个图片进行的;还是背景和背景"与",操作前景和前景"与"?
    谢谢了!
      

  5.   

    BitBlt(MemDC,0,0,w,h,mDC,0,0,SRCAND);
    其中的SRCAND表示“与”,你这个地方好像是mDC与MemDC“与”操作。