展开全部
//获得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 。。。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询