Официальный сайт студ.городка НГТУ
Программирование и БД » С# VS2005 печать форм. Помогите плиз!!! 

#1  11.10.07 18:19

С# VS2005 печать форм. Помогите плиз!!!

Делаю баку на C#, на панели в окне я рисую блок схемы. Этакий редактор). Использую добаление компонентов, ДрагЭндДропопм. Получается красивая блок-схема, и ее необходимо по задпнию выводить на печать.
Кто нибудь, знает как выводить на печать то что на панели. Ну например, если на панели еще панели, кнопки и тд.

Offline

#2  11.10.07 23:39

Re: С# VS2005 печать форм. Помогите плиз!!!

Код: csharp:

[DllImport("gdi32.dll")]    
private  static  extern  bool  BitBlt(    
IntPtr  hdcDest,  //  handle  to  destination  DC    
int  nXDest,  //  x-coord  of  destination  upper-left  corner    
int  nYDest,  //  y-coord  of  destination  upper-left  corner    
int  nWidth,  //  width  of  destination  rectangle    
int  nHeight,  //  height  of  destination  rectangle    
IntPtr  hdcSrc,  //  handle  to  source  DC    
int  nXSrc,  //  x-coordinate  of  source  upper-left  corner    
int  nYSrc,  //  y-coordinate  of  source  upper-left  corner    
System.Int32  dwRop  //  raster  operation  code    
);    
 
private  const  Int32  SRCCOPY  =  0xCC0020;    
 
private  Bitmap  memImage;    
 
private  void  PrepareImage()    
{    
Graphics  graphic  =  this.CreateGraphics();    
Size  s  =  this.Size;    
memImage  =  new  Bitmap(s.Width,  s.Height,  graphic);    
Graphics  memGraphic  =  Graphics.FromImage(memImage);    
IntPtr  dc1  =  graphic.GetHdc();    
IntPtr  dc2  =  memGraphic.GetHdc();    
BitBlt(dc2,  0,  0,  this.ClientRectangle.Width,    
this.ClientRectangle.Height,dc1,  0,  0,  SRCCOPY);    
graphic.ReleaseHdc(dc1);    
memGraphic.ReleaseHdc(dc2);    
}    
 
private  void  button1_Click(object  sender,  System.EventArgs  e)    
{    
PrepareImage();    
printDocument1.Print();    
}    
 
private  void  printDocument1_PrintPage(object  sender,    
System.Drawing.Printing.PrintPageEventArgs  e)    
{    
e.Graphics.DrawImage(memImage,0,0);    
}


http://forums.microsoft.com/msdn/showpost.aspx?postid=692612&siteid=1

Сам не пробовал, сейчас студии нет. По идее, должно работать :)

Исправлено Muxa (11.10.07 23:56)

Offline

#3  12.10.07 07:51

Re: С# VS2005 печать форм. Помогите плиз!!!

хм... спсибо, попробую

Offline

#4  12.10.07 20:18

Re: С# VS2005 печать форм. Помогите плиз!!!

Muxa, большое спасибо! Все рапечатывает)
Только теперь надо как то придумать как всю схему масштабировать на А4)))
И  еще, правильнее писать в том коде

        //Reference the GDI DeleteObject method.
        [System.Runtime.InteropServices.DllImport("GDI32.dll")]

еще раз, спасибо!

Offline

#5  13.10.07 17:12

Re: С# VS2005 печать форм. Помогите плиз!!!

RusRusRus написал(а):

правильнее писать в том коде
        //Reference the GDI DeleteObject method.
        [System.Runtime.InteropServices.DllImport("GDI32.dll")]

ну, если только писать

Код: csharp:

System.Text.StringBuilder sb = new System.Text.StringBuilder();

более правильно, чем

Код: csharp:

using System.Text; 
StringBuilder sb = new StringBuilder();

:))).

RusRusRus написал(а):

Только теперь надо как то придумать как всю схему масштабировать на А4)))

идея основывалась на использовании Bitmapa. не думаю, что будет проблемой растянуть его

RusRusRus написал(а):

еще раз, спасибо!

не за что. нагуглил за 20 секунд

Offline

Программирование и БД » С# VS2005 печать форм. Помогите плиз!!! 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.068 сек.
Выполнено 11 запросов.