我先在单文档中加载了一张图片,然后把光标设定为一个矩形框。
  1.当我在图片某一位置点击左键,矩形框如何贴在图片上。
  2.当我保存时,如何把修改后的图片都加以保存。效果很像windows的画图工具里面对图片的修改。那位大虾做过的,帮帮忙。讲讲思路,最好能给我个实例看看,谢谢。
[email protected]

解决方案 »

  1.   

    可以将图片放进内存,然后在内存上画图,再保存
    跟截屏保存差不多
    http://blog.csdn.net/luckywubi/archive/2009/04/28/4131441.aspx
      

  2.   


    这位朋友是说原理和截屏差不多:截屏就是将屏幕DC的内容保存下来。他说的是,你将显示的东西也放在一个内存DC中,你需要在上面放一个矩形框也好,放一个圆也好,更改一个地方的颜色也好,像做什么就在内存DC上做什么,同时把结果也显示在屏幕上。你将来要保存结果,就将内存DC的内容保存到图片文件中就好了啊!
      

  3.   

    问下为什么我点击却在加载后的贴图上贴不上去矩形,
    说明下想要的效果,目前一个自定义矩形在跟踪光标移动,点击左键,矩形贴在贴图上。void CscreenView::OnLButtonDown(UINT nFlags, CPoint point)
    {
    // TODO: Add your message handler code here and/or call default
    CClientDC dc(this);
    CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    CBrush brush(RGB(0,0,255));
    pBrush=dc.SelectObject(&brush);
    dc.Rectangle(point.x-wrect/2,point.y-hrect/2,point.x+wrect/2,point.y+hrect/2);//里面定义的是矩形大小
    CView::OnLButtonDown(nFlags, point);
    }
      

  4.   

    CDC *pDC = GetDC(); 
    CBrush brush(RGB(0,0,255)); 
    CBrush *pBrush=pDC->SelectObject(&brush); 
    pDC->StretchBlt(...)//贴图,用StretchBlt是图片可以拉伸,保证填充在方框内,如果用BitBlt就不能拉伸!
    pDC->SelectObject(pBrush); 
    brush.DeleteObject(); 
    ReleaseDC(pDC); 
      

  5.   

    pDC->SetPixel
    这两个函数可以了!