在对话框上用picture控件显示图片。运行后打开图片,能够显示,已经添加onpaint()响应。最大化,最小化,滑动滚动条,都能显示图片。进行某一操作,比如放大,旋转后也能显示操作后图片,但是只要拖动滚动条或是最大化最小化,图片消失,picture控件上一片空白,不知道怎么回事...

解决方案 »

  1.   

    void C***Dlg::OnPaint()
    {
    在这里进行图片重绘。。就行了,因为窗口刷新,图片没有重绘。。
    }
      

  2.   

    最大化,最小化,滑动滚动条,都能显示图片。进行某一操作,比如放大,旋转后也能显示操作后图片,但是只要拖动滚动条或是最大化最小化,图片消失
    到底最大化,最小化,滑动滚动条能不能显示??
    贴OnPaint代码。
      

  3.   

    void CMAssitantDlg::OnPaint() 
    {
    // CPaintDC dc(this); // device context for painting

    // TODO: Add your message handler code here

    // Do not call CDialog::OnPaint() for painting messages
        if (IsIconic())
    { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint(); // CRect rect1;
    CWnd *pWnd1 = GetDlgItem(IDC_JIAN_CAI);
    pWnd1->GetClientRect(&rect1);

    CPaintDC dc1(pWnd1);
    dc1.Rectangle(rect1.left, rect1.top, rect1.right, rect1.bottom);
       dc1.SelectStockObject(WHITE_PEN);
    dc1.SelectStockObject(WHITE_BRUSH);

    if(!SCanvusLeft.IsNull()) 
    {
    CDC *pOrigDC= CDC::FromHandle(SCanvusLeft.GetDC());
    dc1.BitBlt(offsetx,offsety, rect1.Width(), rect1.Height(),pOrigDC,sourcex, sourcey,SRCCOPY);
    SCanvusLeft.ReleaseDC();  
    }
      

  4.   

    找到一点原因了,把cpaintdc写成了cclientdc所以最大化最小化,不能显示,但现在改过来了,拖动滚动条不能显示...