我想把一幅图片缩小,以1:2的比例显示出来,代码如下: //加载图片
HBITMAP bmp=(HBITMAP)::LoadImage(0,"c:\\1.bmp",IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION |LR_DEFAULTSIZE |LR_LOADFROMFILE);
CDC dc1,dc2;
dc1.CreateCompatibleDC(NULL);
//把图片选进dc1
dc1.SelectObject(bmp);
dc2.CreateCompatibleDC(NULL);
//把dc1中的图片内容以1:2缩小后放进dc2
if(NULL==TransparentBlt(dc2.m_hDC,0,0,300,200,dc1.m_hDC,0,0,600,400,RGB(0,0,255)))
AfxMessageBox("缩小图片时失败。");
//得到界面上静态文本框控件的指针
CWnd *pwnd=GetDlgItem(IDC_STATIC);
CDC* dc3=pwnd->GetDC();
//把dc1中的部分图片内容显示在界面上,这个没有问题
//dc3->BitBlt(0,0,300,200,&dc1,0,0,SRCCOPY);
//显示dc2中的图片内容,问题在这里:为何什么也不显示???????????
dc3->BitBlt(0,0,300,200,&dc2,0,0,SRCCOPY);
HBITMAP bmp=(HBITMAP)::LoadImage(0,"c:\\1.bmp",IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION |LR_DEFAULTSIZE |LR_LOADFROMFILE);
CDC dc1,dc2;
dc1.CreateCompatibleDC(NULL);
//把图片选进dc1
dc1.SelectObject(bmp);
dc2.CreateCompatibleDC(NULL);
//把dc1中的图片内容以1:2缩小后放进dc2
if(NULL==TransparentBlt(dc2.m_hDC,0,0,300,200,dc1.m_hDC,0,0,600,400,RGB(0,0,255)))
AfxMessageBox("缩小图片时失败。");
//得到界面上静态文本框控件的指针
CWnd *pwnd=GetDlgItem(IDC_STATIC);
CDC* dc3=pwnd->GetDC();
//把dc1中的部分图片内容显示在界面上,这个没有问题
//dc3->BitBlt(0,0,300,200,&dc1,0,0,SRCCOPY);
//显示dc2中的图片内容,问题在这里:为何什么也不显示???????????
dc3->BitBlt(0,0,300,200,&dc2,0,0,SRCCOPY);
TransparentBlt(dc2.m_hDC,0,0,300,200,dc1.m_hDC,0,0,600,400,RGB(0,0,255))
换成:
StretchBlt(dc2.m_hDC,0,0,300,200,dc1.m_hDC,0,0,600,400,PATCOPY);
结果也同样是什么也没显示。是不是我的内存DC2有什么不对?
TransparentBlt(dc3->m_hDC,0,0,300,200,dc1.m_hDC,0,0,600,400,RGB(0,0,255));为什么中间再多一个dc就不行了呢?我想用双缓存,所以这个dc2不能省去,请多多指点呀!解决的话,我结贴前会再加分的,感激不尽!!
晚上回去再结贴。