所谓的擦除技术 你不主动清除原来的图像 必然会导致你说的问题
你的背景如果是纯色那相当的好办 现把你绘制clock的区域刷成纯色 然后在绘制clock
为了避免闪烁 可以用双缓冲的办法如果背景本来就是一张图片 那就稍微复杂点了 办法是 找准clock位于背景图片的位置 然后在背景图片上扣出来对应的图块 先贴图块再画你的clock 也最好双缓存具体代码 如果你对GDI+熟悉的话应该知道怎么写没有什么更好的办法了 如果你的clock图片无需根据时间变化指针什么的 也可以要求美工 必须做全部纯色的图片不许有带透明度的部分。

解决方案 »

  1.   

    lz 你说的透明总有个相对图片吧。如果你没背景底层图片,直接在对话框上贴的。那每次换图之前 也倾城对话框原有的背景色不就行了么。如果有背景图,背景先贴背景图,再贴你的透明Png。简单的来说,就是你没图之前的状态为0 贴图1的时候,先画成0的状态== 具体需求,不大请求 我能想到的只是这些。
      

  2.   

    在控件自绘里调用Invalidate();想让其重绘,没效果。???
    处理过WM_ERASEBKGAND消息么?
      

  3.   

    没有处理这个消息,控件本身也会调用这个消息清除吧。
    只是在最小化的时候会清除,但是鼠标靠近时没有清除。
    我在OnMouseMove中调用 ::SendMessage(m_hWnd,WM_ERASEBKGND,0,0);也没效果
      

  4.   

    我就是在Onpaint中GDI+、Image,graphics.DrawImage
      

  5.   

    我在之前的开发中也处理过类似问题,但做的不是自绘控件,可能自绘的时候有不同之处。不妨试一下,在WM_ERASEBKGND画背景,看是否有效果
      

  6.   


    其实还是有背景,假如说你的dialog上面的背景是一个萌妹子===然后dialog上面有一个按钮 按钮是完全透明的。那么其实相当于按钮的背景就是萌妹子..保存这个区域的位图就是按钮的背景了 以后画图先画这个萌妹子..然后就能实现绘制多长半透明png 这种情况,我做过 不知道我表述清楚木有。
      

  7.   

     试过了,这样没效果。主要是onMouseMove根本不会调用重绘
    我主动调用也没起作用。但是最小化后还原又可以...
      

  8.   

    其实我的思路就是,即然最小化后还原就可以。那我就模拟这种做法,调用WM_ERASEBKGND先擦除,可是竟然不起作用。 ::SendMessage(m_hWnd,WM_ERASEBKGND,0,0);
    在OnMouseMove中又不会擦除背景。另外,像360或扣扣的桌面应用,右上角的按钮效果是怎么实现的?
      

  9.   


     以上是我做的一个小程序中的一部分,就是我说的那样,先刷一次背景。你可以手动在画png的时候先画一次背景 不需要调WM_ERASEBKGND
      

  10.   

      不过我没有从按钮派生。不过道理都相似 你按钮在对话框上,按钮透明 那么对话框上的那部分就是按钮的背景。因为两个背景一样,也就是透明 或者说给别人一种透明的效果。你看上图中的 那两态图也是png 我每次都会先画那个粉红的部分,然后再画png。
      

  11.   

    楼主没看懂我的说辞吗 你的问题我遇到过的 就得那样解决 先用背景色 或背景图案擦除clock所在的区域 再画clock。
      

  12.   

    在控件里Invalidate()是没有反应的, 你要刷新控件所在的父窗口区域, 这样肯定能行:void CXXX::InvalidateParent()
    {
    CRect rect;  this->GetWindowRect(&rect); 
    GetParent()->ScreenToClient(&rect); 
    GetParent()->InvalidateRect(&rect);
    }另外好像GDI+画透明PNG是有问题的, 具体你上网查一下, 有替代的源码。
      

  13.   

    2种方法:
    第一种,先给父窗口发一个消息,传一个HDC参数,让父窗口把他的绘制放到HDC上,这样子窗口绘制时,先绘制 那部分背景,再绘制自己。
    第二种,直接用DirectUI的方式来做。
    这2种方式都支持换背景图。
      

  14.   


    但是图片换的接口肯定你提供 你能知道换了图片,换了什么图片。DirectUI的思想都是这么写的。
      

  15.   


    我靠,,这有效是没错,,遇到特殊情况闪死你~~sighshadow兄弟,,明白的人都为你感觉到亏··