Re[3]: Как TBitmap преобразовать в TGraphic в С++ Builder
От: stuff_pkb  
Дата: 13.03.10 13:22
Оценка:
Нашел пример, приведенный Devnvd, но там так же печатается пустая страница (C++ Builder 5.0, OS Windows XP Servise Pack 3):

HDC hdcPRN; 
TRect r; 
int cxPix,cyPix,csxPix,csyPix; 
if(!PrintDialog1->Execute())return; 
  TPrinter *pPrinter = Printer(); 
  //Далее растянем рисунок на страничку с сохранением 
//пропорций 
   hdcPRN=pPrinter->Handle; 
   cxPix=GetDeviceCaps(hdcPRN,HORZRES); 
   cyPix=GetDeviceCaps(hdcPRN,VERTRES); 
   csxPix=GetDeviceCaps(Canvas->Handle,HORZRES); 
   csyPix=GetDeviceCaps(Canvas->Handle,VERTRES); 
   r.Left=0; r.Top=0; 
   r.Right=cxPix*ClientWidth/csxPix; 
   r.Bottom=r.Right*ClientHeight/ClientWidth; 
   if(r.Bottom >=cyPix) 
   { 
    r.Bottom=cyPix*ClientHeight/csyPix; 
    r.Right=r.Bottom*ClientWidth/ClientHeight; 
   } 
  pPrinter->BeginDoc(); //стартуем печать 
 //Получим картинку формы 
  Graphics::TBitmap *FormImage = GetFormImage(); 
//рисуем на принтер свою картинку 
  pPrinter->Canvas->StretchDraw(r,FormImage); //Если поставить вместо "FormImage" - "Image1->Picture->Graphic" - работет. В чем причина?
//Удаляем картинку
  delete FormImage; 
//Заканчиваем печать 
  pPrinter->EndDoc();
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.