CDC::StretchBlt函数

bkbj 2001-09-10 03:09:09
我在一个picture控件上面放一副位图文件,用到StretchBlt函数,目的是要使位图能够自适应picture控件的大小,代码如下:
pDC->StretchBlt(0,0,bminfo.bmWidth,bminfo.bmHeight,&dcComp,rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,SRCCOPY);

其中rect为picture控件的矩形区域,可是仍然无法实现图片自适应picture控件大小,MSDN上面说有个CDC::SetStretchBltMode函数,可是我试了好像不管用,请问应该怎么做?谢
...全文
2601 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
meifen 2001-09-10
  • 打赏
  • 举报
回复
ok
bkbj 2001-09-10
  • 打赏
  • 举报
回复
我用GetWindowRect(&rect)取得了一个举行区域rect,然后ClientToScreen(&rect),最后StretchBlt,可是图象不显示,当我把ClientToScreen换成ScreenToClient时显示出图象了,但是不是刚好在picture上,而是有点偏往左下角,这是怎么回事?到底应该用ClientToScreen了,还是应该用ScreenToClient?
Julienjut 2001-09-10
  • 打赏
  • 举报
回复
补充一下,把 iWidth,iHeight 换成 WndRect.Width(),WndRect.Height()
Julienjut 2001-09-10
  • 打赏
  • 举报
回复
//GetWindowRect(&WndRect);
//ClientToScreen(&WndRect);
CRect WndRect;
WndRect.top=50;
WndRect.left=20;
WndRect.right=300;
WndRect.bottom=650;

CDC * pmem,*pMiddle;
CBitmap * pbit;
CBitmap * pold,*pMiddleOld;
BITMAP BitMap;
CBitmap *pNewBitmap=new CBitmap;
pmem=new CDC;
pMiddle=new CDC;
pbit=new CBitmap;
pbit->LoadBitmap(IDB_MAINBKGROUND);

pmem->CreateCompatibleDC(pDC);
pMiddle->CreateCompatibleDC(pDC);

pold=(CBitmap *) pmem->SelectObject(pbit);
pbit->GetObject(sizeof(BitMap),&BitMap);
pNewBitmap->CreateCompatibleBitmap(pDC,iWidth,iHeight);
pMiddleOld=(CBitmap *)pMiddle->SelectObject(pNewBitmap);
pMiddle->StretchBlt(0,0,iWidth,iHeight,pmem,0,0,BitMap.bmWidth,BitMap.bmHeight,SRCCOPY);
pDC->BitBlt(WndRect.left,WndRect.top,iWidth,iHeight,pMiddle,0,0,SRCCOPY);
delete pMiddle->SelectObject(pMiddleOld);
delete pMiddle;
delete pmem->SelectObject(pold);
delete pmem;
kane_yj 2001-09-10
  • 打赏
  • 举报
回复
pDC->StretchBlt(0, 0, rect.Width(), rect.Height(),
,&dcComp, 0, 0, bminfo.bmWidth, bminfo.bmHeight,SRCCOPY );

你的参数写反了,先目的后源的

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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