这样保存图像为什么出来全是黑色的?

zhoukang326 2008-10-18 01:18:16
HDC dch;
picture->get_CurDC(&dch);
CRect rc;
CBitmap bmp;
GetClientRect(&rc);
CDC dcmem,dcm;
dcm.Attach(dch);
dcmem.CreateCompatibleDC(&dcm);
bmp.CreateCompatibleBitmap(&dcmem,rc.Width(),rc.Height());
dcmem.SelectObject(&bmp);
dcmem.BitBlt(0,0,rc.Width(),rc.Height(),&dcm,0,0,SRCCOPY);

然后保存,显示。原来的程序显示截屏没有任何问题。就是上面的程序CClientDC dc(this),而后显示。但是我想显示IPicture指示的对象,就不行了。
其中,picture->get_CurDC(&dch);是将图像的DC取出,因为使用的是IPicture指针,返回的是hdc格式。
...全文
1049 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
e01620230 2008-10-21
  • 打赏
  • 举报
回复
你用CDC* dc=GetDlgItem(PICTURE的ID)—>GetDC();返回的就是Picture的DC了
要用hdc, dc->m_hdc;
E_xplorer 2008-10-20
  • 打赏
  • 举报
回复
HDC dcmem = CreateCompatibleDC(dch);
干脆都用句柄好了,这样比较清楚。
我觉得问题不在这,你确定dch中有Picture图像吗?
zhoukang326 2008-10-20
  • 打赏
  • 举报
回复
picture 里面是肯定有图像的。
但是,难道picture->get_CurDC(&dch);
的写法有问题,不能将picture指向的DC传给dch吗?
zhoukang326 2008-10-19
  • 打赏
  • 举报
回复
没有解决,还有人可以看看吗?
wltg2001 2008-10-18
  • 打赏
  • 举报
回复
dcmem.CreateCompatibleDC(&dcm);
=====================
问题估计在这里,看看它的返回值
用户 昵称 2008-10-18
  • 打赏
  • 举报
回复
肯定保存dc没有创建成兼容的DC。
mycool2001 2008-10-18
  • 打赏
  • 举报
回复
dcmem.CreateCompatibleDC(&dch); << 这里改 就可以了。
zhoukang326 2008-10-18
  • 打赏
  • 举报
回复
就是因为dcmem.CreateCompatibleDC()只能创建CDC对象。而我的IPicture返回HDC对象我才改变的啊!!

dcmem.CreateCompatibleDC(&dch); 编译通不过,人家之人CDC的。

请教:怎么改啊?
whoo 2008-10-18
  • 打赏
  • 举报
回复
CreateCompatibleDC 有时候简单的CreateCompatibleDC(NULL)兼容屏幕dc更靠得住些,经验如此,未找到官方说明。
zhoukang326 2008-10-18
  • 打赏
  • 举报
回复
不好意思,将上面一句改成这样,依然无济于事。
bmp.CreateCompatibleBitmap(&dcm,rc.Width(),rc.Height());

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧