как напечатать картинку с помощью WINAPI? имеется в виду что то нативное для винды. особенно надо JPEG (если требуется долгий рассказ, как ее загрузить и сконвертить в съедобный для WINAPI формат, то его приводить не надо).
вот так все понятно:
void PrintPic(LPCTSTR fileName)
{
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,fileName,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE|LR_VGACOLOR);
PRINTDLG prDlg;
memset( &prDlg, 0, sizeof( prDlg ) );
prDlg.lStructSize = sizeof( prDlg );
prDlg.Flags = PD_RETURNDC;
if( !PrintDlg( & prDlg ) ) return;
DOCINFO document_Information;
HDC hPrinter = prDlg.hDC;
memset( &document_Information , 0, sizeof( document_Information ) );
document_Information.cbSize = sizeof( document_Information );
StartDoc( hPrinter, &document_Information );
StartPage( hPrinter );
HDC hdcMem = 0;
HBITMAP hbmOld = 0;
if (hBitmap)
{
int bxWidth, bxHeight;
BITMAP bitmap;
GetObject(hBitmap,sizeof(BITMAP),&bitmap);
bxWidth = bitmap.bmWidth;
bxHeight = bitmap.bmHeight;
int cxpage = GetDeviceCaps (hPrinter, HORZRES);
int cypage = GetDeviceCaps (hPrinter, VERTRES);
hdcMem = CreateCompatibleDC(hPrinter);
hbmOld = (HBITMAP)SelectObject(hdcMem, hBitmap);
SetMapMode (hPrinter, MM_ISOTROPIC);
SetWindowExtEx(hPrinter, cxpage,cypage, NULL);
SetViewportExtEx(hPrinter, cxpage, cypage,NULL);
SetViewportOrgEx(hPrinter, 0, 0, NULL);
StretchBlt(hPrinter, 0, 0, cxpage, cypage, hdcMem, 0, 0,bxWidth,bxHeight, SRCCOPY);
}
EndPage( hPrinter );
EndDoc( hPrinter );
DeleteDC( hPrinter );
SelectObject(hdcMem, hbmOld);
DeleteDC(hdcMem);
}
возможно, есть другие пути?
Мне надо напечатать текст поверх того, что уже отправлено на принтер, для чего у меня есть DC этого принтера, больше ничего нет, исходников той части, которая формирует изображение на печать тоже нет.
Делаю так:
cdc = CreateCompatibleDC(srcDc),
CreateCompatibleBitmap(srcDC),
FillRect(cdc),
DrawText(cdc),
BitBlt(cdc -> srcDC)
EndPage
EndDoc
когда печатается "до меня" текст, то все нормально, когда сложная графика -- мой текст не печатается. что не так может быть?
Здравствуйте, ksd, Вы писали:
ksd>когда печатается "до меня" текст, то все нормально, когда сложная графика -- мой текст не печатается. что не так может быть?
У меня когда печатались большие картинки вообще писало out of memory на пустом листе.
Так попробуйте
http://www.fengyuan.com/bin/printpic.zip
Feng YuanWindows Graphics Programming: Win32 GDI and DirectDraw глава 17
Здравствуйте, kov_serg, Вы писали:
_>Здравствуйте, ksd, Вы писали:
ksd>>когда печатается "до меня" текст, то все нормально, когда сложная графика -- мой текст не печатается. что не так может быть?
_>У меня когда печатались большие картинки вообще писало out of memory на пустом листе.
_>Так попробуйте http://www.fengyuan.com/bin/printpic.zip
Спасибо. Попробовал. Тут моим простым сермяжным методом все работает. Но все также не работает в основном приложении.
_>Feng YuanWindows Graphics Programming: Win32 GDI and DirectDraw глава 17