Druckausgabe horizontal?



  • Ich kann drucken, aber ich möchte gern das Blatt auch horizontal drucken können.
    Kann mir jemand helfen wie das geht?

    Momentan löse ich es so. Ich lade ein Bitmap, welches ich drucken möchte und gebe es mit StretchBlt() zum Drucker. Ich habe aber auch Grafiken im Landscape Format und möchte diese natürlich dann im Querformat drucken können, nur gibt das der aktuelle Code nicht her.

    Kann ich das dem Drucker sagen oder muss ich meine Grafik drehen?

    printDC = GetPrinterDC(druckername);
    
    di.cbSize	= sizeof(DOCINFO);
    di.lpszDocName	= printjobname;
    di.fwType	= NULL;
    di.lpszDatatype	= NULL;
    di.lpszOutput	= NULL;
    
    if (printDC != NULL)
    {
    	printjobID=StartDoc(printDC, &di);		
    	if (printjobID > 0)
    	{
    		StartPage(printDC);
    
    		HBITMAP hBitmap, hbmNew;    
    		hBitmap = (HBITMAP)LoadImage(NULL, startfilename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); 
    
    		HDC hdcSrc = CreateCompatibleDC(NULL);
    
    		BITMAP bm;
    		GetObject(hBitmap, sizeof(bm), &bm);
    
    		SelectObject(hdcSrc, hBitmap);
    		hbmNew = CreateBitmap(bm.bmWidth, bm.bmHeight, bm.bmPlanes, bm.bmBitsPixel, NULL);
    		StretchBlt(printDC,xanfang,yanfang,int(640*xdruckmult),int(840*ydruckmult),hdcSrc,0,0,640,840,SRCCOPY);
    
    		DeleteDC(hdcSrc);
    		EndPage(printDC);
    		EndDoc(printDC);
    	}
    	DeleteDC(printDC);
    }
    


  • ich glaub das kann man den drucker sagen

    schau mal hier: http://www.codersource.net/mfc_print_tutorial_1.html (fast am ende)

    CPrintDialog pd(TRUE);
    if (GetPrinterDeviceDefaults(&pd.m_pd))
    {
        LPDEVMODE dev = pd.GetDevMode();
        GlobalUnlock(dev);
        dev->dmOrientation=DMORIENT_LANDSCAPE;
        dev->dmPaperSize=DMPAPER_A4;
    }
    DoPrintDialog(&pd); 
    
    The default function does only this:
    
    CPrintDialog pd(TRUE);
    DoPrintDialog(&pd);
    

    oder
    http://www.codeguru.com/forum/archive/index.php/t-200260.html

    google einfach nach MFC printing landscape



  • Danke! Jedoch geht das wohl nur in Verbindung mit einem PrinterDialog, welchen ich nicht habe und auch so nicht nutzen kann. Das eine DirectDraw Fullscreen Anwendung. Ich speicher bei Buttondruck eine Bitmap und lasse diese Bitmap dann gestreckt, mit StretchBlt(), drucken. 😞



  • Hast DU es versucht ob es nur mit einem PrinterDialog geht?
    Man kann auch ohne diesen Drucken.
    Tatsache ist das man den Drucker mitteilen muss als LANDSCAPE zu drucken und das geht eben so wie beschrieben.


Anmelden zum Antworten