如何删除控件picture控件背景!
我在picture控件上画了opengl图像!可是当我旋转图像就会有闪的效果!我是不是应该把此背景删除为空就没有问题了?
哪位大侠帮忙看看!谢谢!

解决方案 »

  1.   

    我试过!可是删除控件背景我不知道怎么做啊!
    我在这里加的函数!
    void COpenGlDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
    // TODO: Add your message handler code here and/or call default
    m_ocdn.SpecialKeys(nChar, m_mouse.x, m_mouse.y);
    CWnd* hwnd = GetDlgItem(IDC_STA_OPENGL); 
    RECT rect;
    hwnd->GetClientRect(&rect);
    hwnd->ClientToScreen(&rect);
    InvalidateRect(&rect,true); CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
    }
    每次旋转的时候他都会闪!说明是背景重绘造成的!所以我想把背景弄成透明的!就像用OnEraseBkgnd()函数一样,
      

  2.   

    我把opengl图像放在picture控件上,就像我上面说的,我旋转它!代码如上!发现pictures控件上会闪!
      

  3.   

    在OnEraseBkgnd()里直接return true;
    删掉默认的return CWnd::OnEraseBkgnd(pDC);
    可以吗?
      

  4.   

    那就直接把整个对话框背景设置为透明的了!还有OnEraseBkgnd()是针对整个对话框背景的。
      

  5.   

    我加了以下代码可是还是没有效果啊!
    HBRUSH COpenGlDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
     {
      //HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
     
      // TODO:  Change any attributes of the DC here
     
    if (pWnd->GetDlgCtrlID() == IDC_STATIC)
    {
      pDC->SetBkMode(TRANSPARENT);   //透明  return   (HBRUSH)::GetStockObject(NULL_BRUSH);  //返回的是m_brush的颜色
    }
    return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);;
     }