怎样将CScrollView里显示和没有显示的内容存入Bitmap文件,麻烦帮我看看下面的程序,存的图片大小倒是我想要的,但是窗口的CScrollView里只存了显示的,变成了以窗口坐标(0,0)为起点的屏幕拷贝了。怎么办?

Rukee 2001-11-28 03:48:44
void CMinidrawView::OnFileSavebmp()
{
// TODO: Add your command handler code here

CWindowDC dc(this);
CBitmap bm;

int Width=DRAWWIDTH;//一个已赋值变量
int Height=DRAWHEIGHT;//一个已赋值变量
bm.CreateCompatibleBitmap(&dc,Width,Height);

CDC tdc;
tdc.CreateCompatibleDC(&dc);
CBitmap*pOld=tdc.SelectObject(&bm);
tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY);
tdc.SelectObject(pOld);
BITMAP btm;
bm.GetBitmap(&btm);
DWORD size=btm.bmWidthBytes*btm.bmHeight;
LPSTR lpData=(LPSTR)GlobalAllocPtr(GPTR,size);
/////////////////////////////////////////////
BITMAPINFOHEADER bih;
bih.biBitCount=btm.bmBitsPixel;
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=btm.bmHeight;
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=size;
bih.biWidth=btm.bmWidth;
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
//bm.GetBitmapBits(size,lpData);//此函数在处理5-5-5模式的16位色下会出现颜色混乱
static int filecount=0;
CString name;
name.Format("pict%04d.bmp",filecount++);
m_Path="c:\\";
name=m_Path+name;
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)|'B');
bfh.bfSize=54+size;
bfh.bfOffBits=54;
CFile bf;
if(bf.Open(name,CFile::modeCreate|CFile::modeWrite)){
bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bih,sizeof(BITMAPINFOHEADER));
bf.WriteHuge(lpData,size);
bf.Close();
}
GlobalFreePtr(lpData);
UpdateData(FALSE);
}
...全文
91 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Rukee 2001-11-29
up!
  • 打赏
  • 举报
回复
dongfa 2001-11-29
用OnDraw(CDC *pDC)中的pDC来保存图像.
  • 打赏
  • 举报
回复
Rukee 2001-11-29
可以给分了,谁来拿分?
我其他的帖子都结帐了,就这个了
急着用
300分,我的每个贴都是三百分!
  • 打赏
  • 举报
回复
Rukee 2001-11-28
help!!!!
  • 打赏
  • 举报
回复
dongfa 2001-11-28
我觉得这个问题可以在OnDraw里实现,自己可以设置一个标志存储标志,如果要存图时,就Invalidate() UpdateWindow在OnDraw里用pDC实现图像的保存.
  • 打赏
  • 举报
回复
Rukee 2001-11-28
up,again
  • 打赏
  • 举报
回复
Rukee 2001-11-28
up,please!
  • 打赏
  • 举报
回复
Jneu 2001-11-28
g~z
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2001-11-28 03:48
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……