我要循环作图,如在某一个区域画一个矩形,   每次循环将旧的图形刷掉,用pDC->SetROP2(R2_NOT)或者pDC->SetROP2(R2_XORPEN);可以实现,   但是背景颜色是黑的时候,画出来的线总是白的,   我想用红色或者其他颜色如何实现?   
    
    
  int   nOrgMode   =   pDC->GetRop2();   
  HPEN   hNewPen   =   CreatePen(PS_SOLID,1,   RGB(255,0,0);   //创建红色的画笔   
  HPen   hOldPen   =   pDC->SelectObject(hNewPen);   
    
  pDC->SetROP2(R2_XORPEN);       //设置异或模式以擦除以前的图形   
  pDC->Rectangle(oldRect);     //擦除以前的矩形   
  pDC->Rectangle(newRect);     //画新的矩形   
  pDC->SetRop2(nOrgMode);   
  pDC->SelectObject(hOldPen);   
    
    上面创建了红色的画笔,并希望画出来的矩形框是红色的,结果每次画出来都是   
  白色的,   (背景是黑色的)无论我怎么修改画笔的颜色,请问要实现画出来的是   
  红色如何做啊,谢谢! 

解决方案 »

  1.   

    你将两个用法和起来,既不是NOT也不是XOR,而是R2_NOTXORPEN,就可以了。
      

  2.   

    用异或绘图,颜色控制不了,你可以参考一下AutoCAD的画线,当你拉动皮筋经过不同的颜色背景的时候,同一条皮筋显示的五颜六色。我以前也想这么干,但是最后还是做的和cad一样。如果你非要保持原来的颜色且图形量不是很大的话,还是实时绘制吧。
      

  3.   

    R2_NOTXORPEN我试过的,不行的。。
    好像xiongyouyi 说的是对的,用异或的方式画不出来,但是实时绘制的话效果看起来不好。但我看过有的软件就是可以的,也不知道他们用的是什么办法,有没有高手给指点一下啊????
      

  4.   

    这个方法是可以的。我正在用啊,不过你那个檫除以前的,要确保以前的也是用XORPEN画的。
      

  5.   

    那个软件是别人给我的,叫VGStudioMax..
    6楼说的那个不是不可以画,只是画出来的线是跟屏幕颜色与画笔取的异或,当屏幕背景变的时候,画出来的线条颜色就一直在变,看起来很不舒服,尤其是你要在一副BMP上画线的时候,效果特别不好