Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Уменьшается при печати


Автор: umnick 13.5.2009, 18:56
В начале вывожу в метафайл. Потом содержимое метофайла отображаю во View после чего вывожу на печать. Распечатка получается уменьшеной по сравнению с тем что во View. Как исправить можно?

Рисую в метафайле:

Код

pDoc->pMetaFileDC->TextOut(10,40,"Дата відправки потягу ");
pDoc->pMetaFileDC->TextOut(200,40,date);





Вывод на принтер:
Код

CPrintDialog cp(FALSE);                            
if (cp.DoModal()==IDOK)                            
{
  CDC PrintDC;                                
  PrintDC.Attach(cp.GetPrinterDC());                    
  DOCINFO infStru;                            
  ::ZeroMemory (&infStru, sizeof (DOCINFO));                

  infStru.cbSize = sizeof (DOCINFO);                    

  
  infStru.lpszOutput=NULL;
  if (PrintDC.StartDoc(&infStru )==-1)AfxMessageBox("Error StartDoc") ;    
  PrintDC.StartPage();                            

 HMETAFILE MetaFileHandle=pDoc->pMetaFileDC->Close(); 
 PrintDC.PlayMetaFile(MetaFileHandle);
 delete pDoc->pMetaFileDC;
 CMetaFileDC *meta=new CMetaFileDC();
 meta->Create();
 meta->PlayMetaFile(MetaFileHandle);//сохраняет в метафайл
 DeleteMetaFile(MetaFileHandle);
 pDoc->pMetaFileDC=meta; //передает адресс старого метафайла и создает новый

if (PrintDC.EndPage()<0) AfxMessageBox("Error EndPage");        
if (PrintDC.EndDoc()==0) AfxMessageBox("Error EndDoc");        
 PrintDC.Detach();          
}

Автор: voov 14.5.2009, 09:44
ты рисуешь в режиме отображения поумолчанию - MM_TEXT, где единица измерения 1 пиксел устройства куда рисуешь. у принтера пикселы гораздо мельче, чем у монитора, поэтому распечатка у тебя получается уменьшеной.

используй режим отображения MM_LOMETRIC.
почитай про режимы отображения (CDC::SetMapMode)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)