关于CBitmap读取图像的问题 我用了CBitmap bitmap; bitmap.LoadBitmap(IDB_BS2); m_image1.SetBitmap(bitmap);来读取并载入图像 我想把读取的图像进行处理下 进行放大或者缩小尺寸 请问该如何处理 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用两个内存DC,用 StretchBlt 把源DC拷贝到目标DC,设置新图的高宽即可。SetStretchBltMode(hDstDC,HALFTONE); //设置目标DC为HALFTONE模式StretchBlt(hDstDC,0,0,iWidth2,iHeight2,hScrDC,0,0,iWidth,iHeight,SRCCOPY); //源位图DC拷贝到目标位图DC,使用拉伸模式HBITBMP hBmpDst=(HBITMAP)SelectObject(hDstDC,hBmpDstOld); //获取目标DC位图m_image1.SetBitmap(hBmpDst); CDC memDC;//定义一个设备上下文 memDC.CreateCompatibleDC(pDC);//创建兼容的设备上下文 CBitmap bmp;//定义位图对象 bmp.LoadBitmap(IDB_BKBITMAP);//加载位图 memDC.SelectObject(&bmp);//选中位图对象 pDC->BitBlt(30,20,180,180,&memDC,1,1,SRCCOPY);//绘制位图 //以上是利用BitBlt来绘制位图 CRect rc(30,20,210,200);//定义一个区域 CBrush brush(RGB(0,0,0));//定义一个黑色的画刷 pDC->FrameRect(rc,&brush);//绘制矩形边框 //只是用来观察两者区别的,绘制一个矩形框 rc.OffsetRect(220,0);//移动区域//下边是利用StretchBlt绘制的位图 BITMAP BitInfo;//定义位图结构 bmp.GetBitmap(&BitInfo);//获取位图信息 int x = BitInfo.bmWidth;//获取位图宽度 int y = BitInfo.bmHeight;获取位图高度 pDC->StretchBlt(rc.left,rc.top,rc.Width(),rc.Height(),&memDC,0,0,x,y,SRCCOPY);//绘制位图 pDC->FrameRect(rc,&brush);//绘制边框 brush.DeleteObject();//释放画刷 memDC.DeleteDC();//释放设备上下文 bmp.DeleteObject();//释放位图对象StretchBlt实现放缩 您好 我知道了这个图像的需要改变的尺寸 然后这个IDB_BS1的尺寸小 能不能直接改变bitmap的尺寸? StretchBlt修改里面的参数就能改变显示的大小啊。 使用CDC和重画,都是内存操作,很快的 那具体在哪里定义的 我在函数里定CDC pDC 报错啊 这个只能加载资源位图,要加载本地图片 需要CImage ListCtrl 行列选择变化时发出的消息和item内容改变后发出的消息是一样的???都是LVN_ITEMCHANGED??? 在VS2005的MFC中怎么添加一个类型(该类型是新建的一个类)的成员变量? 如何将图片截成圆形显示? 同一个消息在继承类和对话框中都被影射后该如何处理?(具体问题较长) 一个编译问题 紧急!!!关于拆分窗口 不用WIZARD,使用ODBC数据库 求帮助 数据发送问题? 网页事件响应 急在线等 高手们 快来啊 一个关于鼠标SetCapture()的问题! 怎样知道点击了clistctrl的哪行哪列 对话框加完工具栏后怎么响应?(在线等)
StretchBlt(hDstDC,0,0,iWidth2,iHeight2,hScrDC,0,0,iWidth,iHeight,SRCCOPY); //源位图DC拷贝到目标位图DC,使用拉伸模式
HBITBMP hBmpDst=(HBITMAP)SelectObject(hDstDC,hBmpDstOld); //获取目标DC位图
m_image1.SetBitmap(hBmpDst);
memDC.CreateCompatibleDC(pDC);//创建兼容的设备上下文
CBitmap bmp;//定义位图对象
bmp.LoadBitmap(IDB_BKBITMAP);//加载位图
memDC.SelectObject(&bmp);//选中位图对象
pDC->BitBlt(30,20,180,180,&memDC,1,1,SRCCOPY);//绘制位图
//以上是利用BitBlt来绘制位图
CRect rc(30,20,210,200);//定义一个区域
CBrush brush(RGB(0,0,0));//定义一个黑色的画刷
pDC->FrameRect(rc,&brush);//绘制矩形边框
//只是用来观察两者区别的,绘制一个矩形框
rc.OffsetRect(220,0);//移动区域
//下边是利用StretchBlt绘制的位图
BITMAP BitInfo;//定义位图结构
bmp.GetBitmap(&BitInfo);//获取位图信息
int x = BitInfo.bmWidth;//获取位图宽度
int y = BitInfo.bmHeight;获取位图高度
pDC->StretchBlt(rc.left,rc.top,rc.Width(),rc.Height(),&memDC,0,0,x,y,SRCCOPY);//绘制位图
pDC->FrameRect(rc,&brush);//绘制边框
brush.DeleteObject();//释放画刷
memDC.DeleteDC();//释放设备上下文
bmp.DeleteObject();//释放位图对象
StretchBlt实现放缩
使用CDC和重画,都是内存操作,很快的