解决方案 »

  1.   

    这是我绘图的代码
    case WM_PAINT:
    RECT rect;   
        GetClientRect(hWnd,&rect);   
        cxClient=rect.right;   
        cyClient=rect.bottom;   hdc = BeginPaint(hWnd, &ps); memDC = CreateCompatibleDC(hdc);
    memDC2 = CreateCompatibleDC(hdc);  /* create compatible DC */
    memDC3 = CreateCompatibleDC(hdc);
    SelectObject(memDC2,hBit1);
    BitBlt(memDC3,0,0,1100,510,memDC2,0,0,SRCCOPY);  /* display image */
            
    hRandBrush = CreateSolidBrush(RGB(22,139,235));
    hRandPen = CreatePen(PS_SOLID,1,RGB(22,139,235));
    hOldBrush = (HBRUSH)SelectObject(memDC2,hRandBrush);
    hOldPen = (HPEN)SelectObject(memDC2,hRandPen);
    Rectangle(memDC2,0,0,30,500); //left0
    Rectangle(memDC2,955,0,985,500);//right1
    Rectangle(memDC2,0,0,985,30);//top2
    其他图形省略
    BitBlt(hdc,0,0,cxClient,cyClient,memDC2,0,0,SRCCOPY); SelectObject(memDC,hBit3);
    BitBlt(memDC3,x,y,54,75,memDC,0,0,SRCPAINT);//或
    SelectObject(memDC,hBit2);
    BitBlt(memDC3,x,y,54,75,memDC,0,0,SRCAND);//与
    BitBlt(hdc,x,y,54,75,memDC3,0,0,SRCCOPY);         DeleteDC(memDC2); /* free the memory context */ 
    DeleteDC(memDC); 
    DeleteDC(memDC3); 
    // TODO: 在此添加任意绘图代码...
    EndPaint(hWnd, &ps);
    break;
      

  2.   

    重绘这个动作是由你在事件中通知的,因此invalidaterect时计算兔子的绘制区域,以及兔子下一个动作的区域,重绘这两个小方格组成的矩形区域即可避免全部重绘。
      

  3.   

    检查一下是不是GDI资源有泄露
      

  4.   

    hRandBrush ,hRandPen 都没有释放。也没有把hOldBrush 再选回去