既然已经有DDB了,也就是说有CBitmap对象了。//假设bmp1是已经有的64×64的位图。
CDC srcDC,memDC;
CBitmap * pOldBmp;
pOldbmp = new CBitmap;//把bmp1画入设备srcDC中
srcDC.CreateCompatibleDC(&dc);
srcDC.SelectObject(&bmp1);//建一块32×32的内存设备区域
bmp2.CreateCompatibleBitmap(&dc,32,32);
memDC.CreateCompatibleDC(&dc);
pOldBmp = memDC.SelectObject(&bmp2);
//将bmp1考到32×32的memDC上,多余的区域就被扔掉
memDC.BitBlt(0,0,32,32,&srcDC,0,0,SRCCOPY);
//把oldbmp替换进去,bmp2就是所要的32×32的位图
memDC.SelectObject(pOldBmp);
CDC srcDC,memDC;
CBitmap * pOldBmp;
pOldbmp = new CBitmap;//把bmp1画入设备srcDC中
srcDC.CreateCompatibleDC(&dc);
srcDC.SelectObject(&bmp1);//建一块32×32的内存设备区域
bmp2.CreateCompatibleBitmap(&dc,32,32);
memDC.CreateCompatibleDC(&dc);
pOldBmp = memDC.SelectObject(&bmp2);
//将bmp1考到32×32的memDC上,多余的区域就被扔掉
memDC.BitBlt(0,0,32,32,&srcDC,0,0,SRCCOPY);
//把oldbmp替换进去,bmp2就是所要的32×32的位图
memDC.SelectObject(pOldBmp);
StretchBlt(0,0,32,32....才对吧?
memDC.BitBlt(0,0,32,32,&srcDC,0,0,SRCCOPY);
换成
memDC.StretchBlt(0,0,32,32,&srcDC,0,0,32,32,SRCCOPY);
就得到缩小的图了
bmp1.Attach(hbmp1);
bmp1.GetBitmap(&bmpstru);
////// 此时a1,a2 是正确的大小。
int a1=bmpstru.bmWidth;
int a2=bmpstru.bmHeight;
CDC memdc;
memdc.CreateCompatibleDC(GetDC());
holdbmp1=memdc.SelectObject(&bmp1);
GetDC()->StretchBlt(0,0,LVLARGEICONCX,LVLARGEICONCY,&memdc,0,0,bmpstru.bmWidth,bmpstru.bmHeight,SRCCOPY);
currbmp=GetDC()->GetCurrentBitmap();
currbmp->GetBitmap(&bmpstru);
//////// 但此时a1,a2却都是1。
a1=bmpstru.bmWidth;
a2=bmpstru.bmHeight;