如果在窗口中显示内存位图的部分内容?

jeffreyren 2001-04-23 05:46:00
我新建了一个内存位图,大小为: CRect(0,0,100,500)
我想在窗口中显示内存位图的一部分,比如位图中的 CRect(0,200,100,300)区域。
请问如何做到呢?
...全文
169 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hp1200 2001-07-29
up
  • 打赏
  • 举报
回复
hp1200 2001-07-29
up
  • 打赏
  • 举报
回复
jeffreyren 2001-04-24
网页出错,暂时不能加分。 回来再加。
请指点
  • 打赏
  • 举报
回复
jeffreyren 2001-04-24
部分显示的问题基本解决,新问题 再加20分。

我创建了一个内存位图 memDC, 区域为 CRect(0,200,100,300)
那我想在位图中显示一幅图bitmap,大小为: CRect(0,0,50,100)
怎么做呢?
  • 打赏
  • 举报
回复
zqy 2001-04-24
CRect rc(0, 200, 100, 300)
HDC hMemDC = ::CreateCompatibleDC(hScrDC);
HBITMAP hOldBmp = (HBITMAP)::SelectObject(hMemDC, hMemBitmap);
::StretchBlt(hScrDC, nXScr, nYScr, nWidthScr, nHeightScr, hMemDC, rc.left, rc.top, rc.Width(), rc.Height, SRCCOPY);
::SelectObject(hMemDC, hOldBmp);
::DeleteDC(hMemDC);

StretchBlt的作用就是将一个DC中的一部分拷贝到另一个DC
  • 打赏
  • 举报
回复
rockswang 2001-04-24
这个用不着DIB吧,一句BitBlt全解决了呀,就像dfbb(嘲风)说的。
  • 打赏
  • 举报
回复
jeffreyren 2001-04-24
thank zqy
  • 打赏
  • 举报
回复
zqy 2001-04-24
DC没有大小可言,是是是。。。一个抽象的东西
HBITMAP hBitmap = ::CreateCompatibleBitmap(hMemDC, nWidth, nHeight);
建议多看MSDN,那是标准,也可以说是真理,你的问题上面都有答案(SDK部分):
Platform SDK Documentation\Graphics and Multimedia Services\Windows GDI\Bitmaps
  • 打赏
  • 举报
回复
mmhhj 2001-04-23
my email:mmhjh@263.net
  • 打赏
  • 举报
回复
jeffreyren 2001-04-23
thanks

jeffreyren@163.com
  • 打赏
  • 举报
回复
mmhhj 2001-04-23

首先将位图读到内存比如 lpDIBBits
然后调用如下函数
::SetDIBitsToDevice(pDC->m_hDC, // hDC
0, // DestX
0, // DestY
bmInfo.bmiHeader.biWidth, // nDestWidth
bmInfo.bmiHeader.biHeight, // nDestHeight
0, // SrcX
0, // SrcY
0, // nStartScan
bmInfo.bmiHeader.biHeight, // nNumScans
lpDIBBits, // lpBits
(LPBITMAPINFO)m_Data, // lpBitsInfo
DIB_RGB_COLORS); // wUsage

用StretchBlt 不行,他会依据第4,5参数显示全部位图(拉长或缩小)
至于如何将位图读到内存我这有个例子if you want please tell me your email
good luck
  • 打赏
  • 举报
回复
jeffreyren 2001-04-23
StretchBlt(hdc,0,200,100,300,fromdc,0,200,100,300,SRCCOPY);
应该是这样,对吧
  • 打赏
  • 举报
回复
dfbb 2001-04-23
指定LoadImage,BitBlt,StretchBlt()的源左上角和右上角坐标,源宽,源高就可以了!
  • 打赏
  • 举报
回复
dfbb 2001-04-23
指定LoadImage,BitBlt,StretchBlt()的源左上角和右上角坐标,源宽,源高就可以了!
  • 打赏
  • 举报
回复
111222 2001-04-23
哇你怎么问起这个问题了啊

LoadImage函数的几个参数可以控制
BitBlt也可以、、、、等我OICQ上告诉你!
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2001-04-23 05:46
社区公告

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