VC里怎么改变客户区窗口大小?
我建了个单文档程序,想从电脑上动态读入任意位图,但是位图读入后,老是不是太大就是太小,怎么设置让图读入时客户区能根据其大小自动调节大小?设置窗口大小的函数是什么?怎么用?...
我建了个单文档程序,想从电脑上动态读入任意位图,但是位图读入后,老是不是太大就是太小,怎么设置让图读入时客户区能根据其大小自动调节大小?设置窗口大小的函数是什么?怎么用??
我的英文很差的...那上面术语太多,看不懂,能不能举个简单的例子....
晕,我是想客户区的大小是根据图像来调节的,而不是图像根据窗口大小来调节自己..... 展开
我的英文很差的...那上面术语太多,看不懂,能不能举个简单的例子....
晕,我是想客户区的大小是根据图像来调节的,而不是图像根据窗口大小来调节自己..... 展开
2个回答
展开全部
首先通过类项导添加一个虚函数OnEraseBkgnd(CDC* pDC)
然后添加如下代码:
CDC dcComp;
dcComp.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
CRect rc;
GetClientRect(&rc);
BITMAP bitmap;
bmp.GetBitmap(&bitmap);
CBitmap *pOldbmp = dcComp.SelectObject(&bmp);
pDC->BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&dcComp,0,0,SRCCOPY);
// pDC->StretchBlt(0,0,rc.Width(),rc.Height(),&dcComp,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
dcComp.SelectObject(pOldbmp);
return TRUE;
// return CView::OnEraseBkgnd(pDC);
注:pDC->BitBlt(...)不压缩图片---窗口比图片小则显示图片的一部分
pDC->StretchBlt(...)压缩图片---窗口多大图片就多大(但图片的显示质量不太好)
==================================================
那你就
BITMAP bitmap;
bmp.GetBitmap(&bitmap);
得到图片的大小后再SetWindoPos(...)设置窗口大小呗
然后添加如下代码:
CDC dcComp;
dcComp.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
CRect rc;
GetClientRect(&rc);
BITMAP bitmap;
bmp.GetBitmap(&bitmap);
CBitmap *pOldbmp = dcComp.SelectObject(&bmp);
pDC->BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&dcComp,0,0,SRCCOPY);
// pDC->StretchBlt(0,0,rc.Width(),rc.Height(),&dcComp,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
dcComp.SelectObject(pOldbmp);
return TRUE;
// return CView::OnEraseBkgnd(pDC);
注:pDC->BitBlt(...)不压缩图片---窗口比图片小则显示图片的一部分
pDC->StretchBlt(...)压缩图片---窗口多大图片就多大(但图片的显示质量不太好)
==================================================
那你就
BITMAP bitmap;
bmp.GetBitmap(&bitmap);
得到图片的大小后再SetWindoPos(...)设置窗口大小呗
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询