Drucken von Bilder
-
Hallo warum wird das Bild verkleinert und nich in orig. Größe gedruckt. Hier mein Code
CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this); if (dlgPrint.DoModal()==IDOK) { CDC dcPrint; dcPrint.Attach(dlgPrint.GetPrinterDC()); DOCINFO myPrintJob; myPrintJob.cbSize = sizeof(myPrintJob); myPrintJob.lpszDocName = "MeinDruckAuftrag"; myPrintJob.lpszOutput = NULL; myPrintJob.lpszDatatype = NULL; myPrintJob.fwType = NULL; if (dcPrint.StartDoc(&myPrintJob)>=0) { dcPrint.StartPage(); CWnd* pWnd = (CWnd*) GetDlgItem(IDC_STATIC_BILD); CDC* pDC = pWnd->GetDC(); CBitmap bitmap; CDC dc; CRect rect; pWnd->GetClientRect(rect); BITMAP bm; HBITMAP hPixel = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),"c:\\test_neu.bmp", IMAGE_BITMAP, 0,0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); bitmap.Attach(hPixel); bitmap.GetBitmap(&bm); dc.CreateCompatibleDC(pDC); dc.SelectObject(bitmap); //dcPrint.StretchBlt(0,0,rect.Width(), rect.Height(),&dc,0,0, bm.bmWidth, bm.bmHeight, SRCCOPY); dcPrint.StretchBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,bm.bmWidth, bm.bmHeight, SRCCOPY); dcPrint.TextOut(100,100,"test"); dcPrint.EndPage(); dcPrint.EndDoc(); } dcPrint.DeleteDC(); } }
-
Das liegt vermutlich am MapMode des DruckerDC. Du hast nix damit gemacht und deswegen ist das wohl noch MM_TEXT.
Mach mal:
dcPrint.Attach(dlgPrint.GetPrinterDC()); //<--- Die Zeile hast du schon, dient zur Orientierung. cd.Print.SetMapMode(MM_LOMETRIC);
Erklärung: MM_TEXT arbeitet auf Pixelbasis. Der Drucker kann mehr Pixel pro cm2 (hat eine höhere Auflösung) als dein Monitor / TFT.
Leider musst du jetzt mit den y-Koordinaten aufpassen, die müssen jetzt alle negativ sein, sonst siehst du nix mehr.
-
ne das geht nicht
-
Kannst du "geht nicht" genauer beschreiben?
Hast du die y-Koordinaten angepasst?
-
Ist es kleiner als ein Brotlaib?
-
Auja, das müßte man mal testen.
-
mein Bild 700 * 900 Pixel kannst du das für mich errechnen bzw. ändern
-
Die Pixel sind irrelevant. Du musst nur ein Minuszeichen einbauen:
dcPrint.StretchBlt(0,0,rect.Width(),-rect.Height(),&dc,0,0,bm.bmWidth, -bm.bmHeight, SRCCOPY);
Ich glaube so muss das, Zeichenbefehle kann ich aber nicht gut genug, um die aus dem Kopf hinzubekommen.
-
es kommt nur eine leere Seite
-
Mach es dir nicht so schwierig.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-54279.html
Ein Bild wird auf einem Drucker genauso gezeichnet wie auf den Bildschirm.
Übergibt der o.a. Klasse deinen DC und gut ist es.
-
bitte um ein Bsp: für meinen Code