我在客户区画了一些东西,我想把它保存为一个BMP文件。
我对什么内存设备对象不了解,请详细指教!

解决方案 »

  1.   

    CDC dcBack;
    CBitmap bmpBack;if (!dcBack.CreateCompatibleDC(NULL))
    {
    return FALSE;
    }DEVMODE devMode;
    EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&devMode);if (!bmpBack.CreateBitmap(nWidth, nHeight, 1, devMode.dmBitsPerPel, NULL))
    {
    return FALSE;
    }CBitmap* pbmpOld=(CBitmap*)SelectObject(&bmpBack);
    然后将客户区DC中内容用BitBlt()或其他同类函数拷贝到dcBack上。
    初始化或获得bmp文件头,bmp信息头,颜色表,使用GetDIBits()再获取位图数据长度,获取位图数据。
    最后依次写入文件即可。
      

  2.   

    我这样写他不能正确保存。怎么出来的图像是全黑色的,然后是1024X768的?我的客户区只有一点点。
    void CMyAppView::OnFileSave()
    {
    // TODO: 在此添加命令处理程序代码
             //客户区内已经有图像了,进行保存。
    CDC* dc=GetDC(); CDC dcCompatible;
    dcCompatible.CreateCompatibleDC(dc);
    CBitmap bmp;
    VERIFY(bmp.CreateCompatibleBitmap(dc,dc->GetDeviceCaps(HORZRES),dc->GetDeviceCaps(VERTRES)));
    CImage img;
    img.Attach(bmp);
    img.Save("1.bmp");
    img.Detach();}