PDA

View Full Version : حرفه ای: چاپ عينا ً خود فرم برنامه بر روي كاغذ!



AlgorithmX
شنبه 22 مرداد 1390, 18:20 عصر
سلام من يه دستور تو vb6 دارم كه عينن هرچي رو فرمم باشه رو روي كاغذ چاپ ميكنه!!(حتي button ، ليبل و.. )
تو خيلي از برنامه هامم از استفاده كرده بودم! اما نمي تونم ازش توي .نت استفاده كنم!!
اين كد منه:

Printer.PaperSize = PrinterObjectConstants.vbPRPSA4
Printer.PrintQuality = PrinterObjectConstants.vbPRPQHigh
Printer.Orientation = PrinterOrientationConstants.cdlPortrait
CommonDialog1.ShowPrinter
Printer.Copies = CommonDialog1.Copies
Me.PrintForm
مشكلش از دستوره Printer هست! كه قبلا بو وي بي خودش يك متد بود! اما حالا ..


منون ميشم اين كد رو برام به .نت تبديل كنيد!!

armin8651
یک شنبه 23 مرداد 1390, 00:11 صبح
از این کدها استفاده کنید:

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim b As New Bitmap(Me.Width, Me.Height)
Me.DrawToBitmap(b, New Rectangle(0, 0, Me.Width, Me.Height))
e.Graphics.DrawImage(b, New Point(0, 0))
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PrintDialog1.ShowDialog()
PrintDocument1.Print()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim PrintPreviewDialog1 As New PrintPreviewDialog
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.Show()
End Sub

oliya24
یک شنبه 23 مرداد 1390, 01:55 صبح
دوست من این کد خطا داره
من با 2010 تست کردم نشد

Behzad_MCP
یک شنبه 23 مرداد 1390, 10:27 صبح
MicroSoft Example

Dim memoryImage As Bitmap

Private Sub CaptureScreen()
Dim myGraphics As Graphics = Me.CreateGraphics() Dim s As Size = Me.Size
memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s)
End Sub

Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
printDocument1.PrintPage
e.Graphics.DrawImage(memoryImage, 0, 0)
End Sub

AlgorithmX
یک شنبه 23 مرداد 1390, 17:32 عصر
از این کدها استفاده کنید:

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim b As New Bitmap(Me.Width, Me.Height)
Me.DrawToBitmap(b, New Rectangle(0, 0, Me.Width, Me.Height))
e.Graphics.DrawImage(b, New Point(0, 0))
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PrintDialog1.ShowDialog()
PrintDocument1.Print()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim PrintPreviewDialog1 As New PrintPreviewDialog
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.Show()
End Sub

دمت گرم داداش اما این صفحه خالی چاپ میکنه!! حتی پیشنمایش چاپ هم صفحه ی خالییه!

AlgorithmX
یک شنبه 23 مرداد 1390, 17:36 عصر
MicroSoft Example

Dim memoryImage As Bitmap

Private Sub CaptureScreen()
Dim myGraphics As Graphics = Me.CreateGraphics() Dim s As Size = Me.Size
memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s)
End Sub

Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
printDocument1.PrintPage
e.Graphics.DrawImage(memoryImage, 0, 0)
End Sub

دمه شما هم گرم! خوب حالا عکس گرفته شده رو چطوری واسه پرینتر بفرستم؟



اون خط کد بالا خیلی کد توپیه! چون دقیقا خوده فرممو واسم چاپ میکنه! حطی اگه کنترلی هم روی فرمم باشه اونو واسم تو پرینت هم میاره!!!

Behzad_MCP
یک شنبه 23 مرداد 1390, 17:57 عصر
دوست عزیز این کد هم همینکارو میکنه فقط اون متد CaptureScreen رو باید صدا کنی مثلا :



Private Sub btnPrintForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrintForm.Click

CaptureScreen()


Me.PrintPreviewDialog1.Document = Me.PrintDocument1


Me.PrintPreviewDialog1.WindowState = FormWindowState.Maximized


Me.PrintPreviewDialog1.PrintPreviewControl.Zoom = 1.0


Me.PrintPreviewDialog1.ShowDialog()

End Sub

AlgorithmX
یک شنبه 23 مرداد 1390, 20:36 عصر
دوست عزیز این کد هم همینکارو میکنه فقط اون متد CaptureScreen رو باید صدا کنی مثلا :



PrivateSub btnPrintForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrintForm.Click

CaptureScreen()


Me.PrintPreviewDialog1.Document = Me.PrintDocument1


Me.PrintPreviewDialog1.WindowState = FormWindowState.Maximized


Me.PrintPreviewDialog1.PrintPreviewControl.Zoom = 1.0


Me.PrintPreviewDialog1.ShowDialog()

EndSub



من یه شی PrintPreviewDialog روی فرمم گذاشتم ولی باز به او خط ها گیر میده!! چرا؟؟؟

Behzad_MCP
دوشنبه 24 مرداد 1390, 14:55 عصر
دوست عزیز اون کدهارو بیخیال شو فقط یه PrintDocument و PrintPreviewDialog بنداز رو فرمت و کدهایی که من دربالا گفتم رو بنویس کار حله

Hossis
یک شنبه 05 آبان 1392, 22:58 عصر
دوست عزیز این کد هم همینکارو میکنه فقط اون متد CaptureScreen رو باید صدا کنی
این دستور باعث میشه که اگه فرم خارج از صفحه نمایش بود یا فرم دیگه ای احیانا روی فرم ما افتاد و یا طول و عرض صفحه تغییر کرد، اشتباه عکس بگیره

ka_mi_7
چهارشنبه 13 اسفند 1393, 16:19 عصر
سلام
من هم توی برنامه م میخوام دقیقا خود فرم چاپ بشه
این روشهایی که اینجا گفتین کلا از فرم عکس میگیره و میفرسته واسه چاپ که امتحانشون کردم و مشکل اینجاست که کیفیت عکسش خیلی پایینه
من میخوام فرمم با همین کیفیت که رو مانیتور میبینم روی کاغذ چاپ بشه
راحتترین راه رو لطفا بهم بگین
129089
این فرم منه که میخوام به همین شکل روی کاغذ چاپ بشه...

ka_mi_7
پنج شنبه 14 اسفند 1393, 11:32 صبح
یکی نیست جواب منو بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟