我在dialog::OnPaint()中实现了将图片拉伸。然后在上边画图形。
然而我在画图形时也响应了OnPaint()这又使图片拉伸而出现闪耀现象,我想实现只将图片拉伸一次,然后在图片上画图形。
我该怎么处理?我想将拉伸后的图片保存到内存中,然后画图形时就不需要在做图片拉伸处理。
谢谢。。
CBitmap stretchbmp;
memDC.SelectObject((HBITMAP)theImage);
stretchDC.CreateCompatibleDC(pDC); 
int savestrecthDC=stretchDC.SaveDC();
stretchbmp.CreateCompatibleBitmap(pDC,ImageRect.Width(),ImageRect.Height());
stretchDC.SelectObject(stretchbmp);
stretchDC.StretchBlt(0,0,ImageRect.Width(),ImageRect.Height(),&memDC,0,0,m_size.cx,m_size.cy,SRCCOPY);
上面这段程序是做图片拉伸的。 我想只做一次,然后画图行时,不处理图片拉伸。
谢谢指导。我挺急的

解决方案 »

  1.   

    画图的时候,不直接或间接调用OnPaint()。
    void CMyDialog::DrawMyShape()
    {
        CDC *pDC=GetDC();
        // .....
        // 利用pDC进行画图。
        // .....
        ReleaseDC(pDC); 
    }
      

  2.   

    ddszhan(高等数学
    :我是在图片背景上画图的。
    背景图片拉伸操作是在OnPaint()中。
    而在画图时也要相应OnPaint()啊,如果按你所说,图形怎么显示了?
      

  3.   

    DrawMyShape()肯定也要放在OnPaint()中啊。
    还是不会。
      

  4.   

    1、在里面加一个条件判断!
    2、新建一个wind用于画图!
      

  5.   

    不行 啊,一定要在一个wind的。
    能不能把拉伸的图片保存起来,下次就不需要 处理拉伸。。怎么保存。怎么调用,,,请指导急!
      

  6.   

    如何将 stretchDC保存起来,供下次使用。。
      

  7.   

    除非不放在OnPaint中,要不然它总会闪的
    想其他办法吧