各位大哥 小弟最近碰到一个自己无法解决的问题,在桌面上建立一个透明的窗口,然后可以在上面画线,但是不知道怎么用橡皮擦能擦除自己在窗口所画的线,同时要保证透明窗口底下的显示不被擦除。使用 
dc.SetROP2(R2_NOTXORPEN); 
dc.MoveTo (m_pt.x,m_pt.y); 
dc.LineTo (point.x,point.y); 
连续画两次,透明窗口的底下的显示也被擦成白的。有没有一个直接擦成透明的函数? 
本人新手对于给分不咋懂,等有分了一定补上

解决方案 »

  1.   

    应该是R2_XORPEN吧,或者别擦,保存底图,然后每次在底图上绘线
      

  2.   

    哦 擦出效果你最好是使用限制绘图区域来实现,你把绘图的区域都限制住了,那就等于擦出了。GDI 的CDC类用SelectClipRgn(CRgn*  rgn), 每次增加或减少擦出,是要进行CRgn类的运算就行了。如果是GDI+的话,使用Graphics 的
    Graphics::SetClip(GraphicsPath*,CombineMode)
    Graphics::SetClip(Region*,CombineMode)
    Graphics::SetClip(Rect&,CombineMode)
    Graphics::SetClip(HRGN,CombineMode)
    Graphics::SetClip(RectF&,CombineMode) 这些方法
      

  3.   

    谢了各位 我现在用两幅图进行叠加来取消所画的内容 使用到n个内存DC