#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
#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

