展开全部
BOOL CDib::DrawDib(HDC hDC,
LPRECT lpDCRect,
HGLOBAL hDIB,
LPRECT lpDIBRect,
CPalette* pPal)
{
BOOL bSuccess=FALSE; // 重画成功标志
HPALETTE hOldPal=NULL; // 以前的调色板
if (hDIB == NULL)// 判断是否是有效的DIB对象
{
return FALSE;// 不是,则返回
}
lpdib = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);// 锁定DIB
lpDIBBits = GetBits(lpdib);// 找到DIB图象像素起始位置
if (pPal != NULL)// 获取DIB调色板,并选取到设备环境中它
{
HPALETTE hPal = (HPALETTE) pPal->m_hObject;
hOldPal = ::SelectPalette(hDC, hPal, TRUE);
}
::SetStretchBltMode(hDC, COLORONCOLOR);// 设置显示模式
bSuccess = ::StretchDIBits(hDC, // 设备环境句柄
lpDCRect->left, //目标X坐标
lpDCRect->top, // 目标Y坐标
GetRectWidth(lpDCRect), // 目标宽度
GetRectHeight(lpDCRect), // 目标高度
lpDIBRect->left, // 源X坐标
lpDIBRect->top, // 源Y坐标
GetRectWidth(lpDIBRect), // 源宽度
GetRectHeight(lpDIBRect), // 源高度
lpDIBBits, // 指向dib像素的指针
(LPBITMAPINFO)lpdib, // 指向位图信息结构的指针
DIB_RGB_COLORS, // 使用的颜色数目
SRCCOPY); // 光栅操作类型
::GlobalUnlock(hDIB); // 解除锁定
if (hOldPal != NULL)// 恢复系统调色板
{
::SelectPalette(hDC, hOldPal, TRUE);
}
return bSuccess;
}
在视图ondraw函数中调用上面的函数,即可实现画图.
LPRECT lpDCRect,
HGLOBAL hDIB,
LPRECT lpDIBRect,
CPalette* pPal)
{
BOOL bSuccess=FALSE; // 重画成功标志
HPALETTE hOldPal=NULL; // 以前的调色板
if (hDIB == NULL)// 判断是否是有效的DIB对象
{
return FALSE;// 不是,则返回
}
lpdib = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);// 锁定DIB
lpDIBBits = GetBits(lpdib);// 找到DIB图象像素起始位置
if (pPal != NULL)// 获取DIB调色板,并选取到设备环境中它
{
HPALETTE hPal = (HPALETTE) pPal->m_hObject;
hOldPal = ::SelectPalette(hDC, hPal, TRUE);
}
::SetStretchBltMode(hDC, COLORONCOLOR);// 设置显示模式
bSuccess = ::StretchDIBits(hDC, // 设备环境句柄
lpDCRect->left, //目标X坐标
lpDCRect->top, // 目标Y坐标
GetRectWidth(lpDCRect), // 目标宽度
GetRectHeight(lpDCRect), // 目标高度
lpDIBRect->left, // 源X坐标
lpDIBRect->top, // 源Y坐标
GetRectWidth(lpDIBRect), // 源宽度
GetRectHeight(lpDIBRect), // 源高度
lpDIBBits, // 指向dib像素的指针
(LPBITMAPINFO)lpdib, // 指向位图信息结构的指针
DIB_RGB_COLORS, // 使用的颜色数目
SRCCOPY); // 光栅操作类型
::GlobalUnlock(hDIB); // 解除锁定
if (hOldPal != NULL)// 恢复系统调色板
{
::SelectPalette(hDC, hOldPal, TRUE);
}
return bSuccess;
}
在视图ondraw函数中调用上面的函数,即可实现画图.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询