载入图片到CompatibleDC
在DC上绘图
DC上原来选入的位图就是你绘制后的图,
吧HBITMAP保存成文件,网上一堆代码..

解决方案 »

  1.   

    多谢仁兄相救,如何载入图片到CompatibleDC
    ??
      

  2.   

       Graphics graphics(hdc);
       Image image(L"pattern.png");
       graphics.DrawImage(&image, 10, 10);
       graphics.drawline();
       graphics.drawRectangle();
      

  3.   


    Graphics类好像要自己下吧,上次弄了半天没弄成功,能否不用此类了
      

  4.   

    如果要保存的话.就先在内存中建一张图,如果需要支持png等多种格式的话,
    Bitmap bitmap(100,100);
    Graphics* graph = Graphics::FromImage(bitmap);
    graph->画线
    画矩形
    OnPaint()
    {
    Graphics graphics(dc.GetSafeHdc());
    graphics.DrawImage(bitmap,rectF);
    graphics.ReleaseHDC(dc.GetSafeHdc());
    }
      

  5.   

    这个不用自己下,这个是GDI+图形库,需要初始化,Google一下,很简单。
      

  6.   

    如果你只需要支持bmp格式的话,就用gdi就可以了,搜索一下双缓冲
      

  7.   


    这个是GDI+,不是自己写的东西不过有一种最简单的方法,使用DirectX 3D
    int w,h;//初始化3D Device
    D3DXIMAGE_INFO Info;
    D3DXGetImageInfoFromFile("你的图片路径", &Info);
    Device->CreateOffscreenPlainSurface(Info.Width, Info.Height, Info.Format,D3DPOOL_DEFAULT,&surface, NULL);
    D3DXLoadSurfaceFromFile(surface, NULL, NULL, "你的图片路径", NULL, D3DX_FILTER_NONE, 0xFF000000, NULL);HDC hdc;
    surface ->GetDC(&hdc);
    //绘制你需要的东西 
    surface->ReleaseDC(hdc);
    RECT r = {0,0,Info.Width, Info.Height};
    //D3DXIFF_BMP为位图格式,你可以修改
    D3DXSaveSurfaceToFile("要保存的路径名",D3DXIFF_BMP,surface ,0,&r);最后不要忘记释放
      

  8.   

    载入图片了,但是我在上边做DrawLine、drawRectangle操作时很闪烁,要开双缓存么?怎么打开呢?我用的是GDI+
      

  9.   

    重载onerasebackgroud函数,return true
      

  10.   

    我这样实现的,在onDraw中用graphics.DrawImage(&photo,10+iWidth+2,10,iWidth,iHeight)把图片载入进来,把它当成画布,然后我在画布上做drawline等操作,点击拖动鼠标绘制直线时出现两个问题:1,绘制直线时很闪烁;2,松开鼠标后绘制的直线不见了。
    如何解决?
      

  11.   


    双缓冲,先将这些绘制到Bitmap中
      

  12.   


    双缓冲,先将这些绘制到Bitmap中Bitmap bitmap(100,100);
    Graphics graph (&bitmap);
    这样构造好些,不要用狗屁指针,容易出问题。