c++怎样显示图像的一部分

用C++编程,抓取桌面窗口图片,怎样只显示部分图片呢?用控制指针的方法么?... 用C++编程,抓取桌面窗口图片,怎样只显示部分图片呢?用控制指针的方法么? 展开
 我来答
qiujiejia
2014-04-22 · TA获得超过500个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:249万
展开全部

//获得rect指定的图片块,用完此函数返回的HBITMAP句柄后,要调用::DeleteObject()删除句柄
HBITMAP GetBitmap(HWND m_hWnd,RECT& rect)
{
int RectWidth=rect.right-rect.left;
int RectHeight=rect.bottom-rect.top;

HDC hScrDC=::GetDC(m_hWnd); //创建屏幕DC
HDC hMemDC=CreateCompatibleDC(hScrDC); //创建内存DC
HBITMAP bitmap=::CreateCompatibleBitmap(hScrDC,RectWidth,RectHeight); //创建兼容位图
HBITMAP OldBitmap=(HBITMAP)::SelectObject(hMemDC,bitmap); //把位图选进内存DC

 //把rect指定的图块拷贝到内存设备描述表
BitBlt(hMemDC,0,0,RectWidth,RectHeight,hScrDC,rect.left,rect.top,SRCCOPY);  

//获取rect指定的bitmap
bitmap=(HBITMAP)::SelectObject(hMemDC,OldBitmap); 

::DeleteDC(hMemDC) ; //删除内存DC
::ReleaseDC(m_hWnd,hScrDC) ; //释放屏幕DC

return bitmap; 
}


void DrawBitmap(HBITMAP m_bitmap,HDC hScrDC,int x=0,int y=0,int width=100,int height=100 ,int startX,int startY )
{
HDC hMemDC=CreateCompatibleDC(hScrDC); //创建内存DC
::SelectObject(hMemDC,m_bitmap); //把位图选进内存DC
BitBlt(hScrDC,x,y,width,height,hMemDC,0,0,SRCCOPY); //内存DC映射到屏幕DC
::DeleteDC(hMemDC) ; //删除内存DC
}



1.定义变量 HBITMAP g_bitmap;

2.调用GetBitmap 获得一个屏幕的 HBITMAP 句柄:
g_bitmap=GetBitmap(.....)

3. 在WM_PAINT里绘图:
x,y width ,height 指图片将会在窗口里的此区域里显示。
int startX,int startY 指从 g_bitmap 的哪个位置开始拷贝图片块到要显示的区域,即上面所说的  x,y width ,height 区域
DrawBitmap(g_bitmap,窗口的dc , x,y width ,height 。。。。。。
tattackor
推荐于2017-10-06 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:887万
展开全部
1.MFC里有filedilog的控件,插入后,就可以读取图片的路径
2.得到路径后,使用GDI或者图像控件显示,记得使用Update来刷新
3.显示的话肯定是读入了内存,修改时修改内存中的文件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式