对话框的背景色是渐变的
我把一张位图透明的贴上去(一)第一个要请教的
当鼠标移动到这张位图区域的时候
我在图案的边上画一个矩形
当鼠标移开这块矩形区域的时候
要去掉之前画上去的线

我用pDC->SetROP2(R2_MERGEPENNOT);为什么只有当颜色是黑色的时候才有效
不知道这个函数是不是还要设置笔的颜色的。
不知道还有没有其他的办法实现这个功能。(二)第二个要请教的
接下来就是在鼠标点击的时候实现按钮下压的效果,
如果我再把位图透明的贴上去(位置稍微右下移动),
那么原先的图片没有被覆盖的部分会残留,
不知道怎么样去掉这部分残余的图像。
又或者说用什么办法实现这种下压的效果
(因为对话框背景是渐变的,不能用有底色的位图,所以做透明处理)亿分感谢!!

解决方案 »

  1.   

    如果Invalidate();的话屏幕会频繁闪烁
    不知道能不能就给某个矩形区域Invalidate();的
      

  2.   

    1,每次画是使用 在原地重复画一次可以消除上次的效果
    pDC->SetROP2(R2_XORPEN);   2,背景需要重画,在画画新的效果。建议采用内存DC
      

  3.   

    Invalidate()闪烁的厉害我除了OnEraseBkgnd用的是默认DC
    其他都是用了内存DC的
    pMemDC->CreateCompatibleDC(pWndDC);不知道是不是因为OnEraseBkgnd的缘故
    这里面实现的是渐变效果这个要放到内存里去画又不晓得怎么操作了
      

  4.   

    pDC->ExtTextOut(0,0,ETO_OPAQUE,&rect,_T(""),NULL);
    这其实是个很快的用某颜色填充区域的办法
    之前设置下背景色
    pDC->SetBkColor(RGB(0x95,0xd0,0xaa));
      

  5.   

    1 pDC->SetROP2(R2_NOTXORPEN);
    2 鼠标点击的时候换一张下压效果的图片