DIB打印
强硕
2023-12-01
* /输入参数:
* CDC* pDC - 指向将要接收DIB图象的设备上下文指针
* CPoint origin - 显示DIB的逻辑坐标
* CSize size - 显示矩形的宽度和高度
*
* /返回值:
* BOOL - 如果成功,则为TRUE,
*
* /说明:
* 通过调用Win32 SDK的StretchDIBits函数将CDib对象输出到显示器(或者打印机)。
* 为了适合指定的矩形,位图可以进行必要的拉伸
BOOL CDib::Draw(CDC* pDC, CPoint origin, CSize size)
{
// 如果信息头为空,表示尚未有数据,返回FALSE
if(m_lpBMIH == NULL) return FALSE;
// 如果调色板不为空,则将调色板选入设备上下文
if(m_hPalette != NULL) {
::SelectPalette(pDC->GetSafeHdc(), m_hPalette, TRUE);
}
// 设置显示模式
pDC->SetStretchBltMode(COLORONCOLOR);
// 在设备的origin位置上画出大小为size的图象
::StretchDIBits(pDC->GetSafeHdc(), origin.x, origin.y,size.cx,size.cy,
0, 0, m_lpBMIH->biWidth, m_lpBMIH->biHeight,
m_lpImage, (LPBITMAPINFO) m_lpBMIH, DIB_RGB_COLORS, SRCCOPY);
// 返回
return TRUE;
}