 |
假如你使用的是Doc/View体系。
如果你的位图是在OnDraw中绘制的,那么你在OnPaint中调用OnDraw就可以了,如:
void CMyView::OnPrint( CDC *pDC, CPrintInfo *pInfo )
{
OnDraw( pDC );
}
如果你的位图不是在OnDraw中绘制的,而是在其他窗口中,你需要先获得那个窗口的DC,如pDCSrc,然后使用CDC::BitBlt就可以了,如:
void CMyView::OnPrint( CDC *pDC, CPrintInfo *pInfo )
{
pDC->BitBlt(0, 0, 100, 200, pDCSrc, 0, 0, SRCCOPY );
}
总之,打印机打印位图的方法和窗口显示位图的方法基本一样。
盛剑国的意见:
BitBlt函数会造成打印的图片非常小,需要得到打印机的分辨率然后用StretchBlt,但是问题又来了,有些打印机不支持StretchBlt,可能需要用StretchDibits函数,总之远远比李海说的复杂。
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 打印与报表, print, report crystal report, active report。
|