PDA

View Full Version : چاپ فرم البته به صورت پشت و رو



Ghasem_M
دوشنبه 30 بهمن 1385, 11:58 صبح
سلام خدمت دوستان عزیز

من می خواهم که از روی فرم پرینت بگیرم در همین سایت کدی را پیدا کردم که این کار رو انجام می داد که در زیر این کد رو گذاشتم ولی حالا می خواهم با استفاده از همین کد یک بار از روی فرم پرینت بگیرم بعد فرم رو تغیر بدم و دو باره پرینت بگیرم ولی فرم دومی پشت همین کاغذی چاپ بشه که من در پرینت قبلی ازش استفاده کردم از دوستان عزیز خواهش میکنم حتما کمکم کنند چون خیلی فوری و ضروری :ناراحت:








Public

Class Form1

Inherits System.Windows.Forms.Form
PrivateDeclareFunction BitBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal hdcDest As IntPtr, ByVal nXDest AsInteger, ByVal nYDest AsInteger, ByVal nWidth AsInteger, ByVal nHeight AsInteger, ByVal hdcSrc As IntPtr, ByVal nXSrc AsInteger, ByVal nYSrc AsInteger, _
ByVal dwRop As System.Int32) AsLong
Dim memoryImage As Bitmap
PrivateSub 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)
Dim dc1 As IntPtr = mygraphics.GetHdc
Dim dc2 As IntPtr = memoryGraphics.GetHdc
BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, Me.ClientRectangle.Height, dc1, 0, 0, 13369376)
mygraphics.ReleaseHdc(dc1)
memoryGraphics.ReleaseHdc(dc2)
EndSub
PrivateSub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.Graphics.DrawImage(memoryImage, 0, 0)
EndSub






PrivateSub Form1_DoubleClick(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMyBase.DoubleClick
CaptureScreen()
PrintDocument1.Print()
EndSub
end class

oVERfLOW
دوشنبه 30 بهمن 1385, 13:12 عصر
این کار اولا بستگی داره به پرینتر که بتونه این دستورات رو پشتیبانی کنه

برای چاپ دورو هم باید از دستورات API استفاده کنید
یه Stucture هست که مشخصات چاپ توش ذخیره می شه و خیلی گزینه داره
یکی ش هم اگه اشتباه نکنم همین چاپ دورو بود
باید توی MSDN دنبالش بگردید
از OpenPrinter شروع کنید...

Ghasem_M
دوشنبه 30 بهمن 1385, 16:46 عصر
این کار اولا بستگی داره به پرینتر که بتونه این دستورات رو پشتیبانی کنه

برای چاپ دورو هم باید از دستورات API استفاده کنید
یه Stucture هست که مشخصات چاپ توش ذخیره می شه و خیلی گزینه داره
یکی ش هم اگه اشتباه نکنم همین چاپ دورو بود
باید توی MSDN دنبالش بگردید
از OpenPrinter شروع کنید...

میشه خواهش کنم یه کمی بیشتر توضیح بدید یا اگر کدی چیزی دارید بگزارید میشه اسم stucture را بگید

oVERfLOW
سه شنبه 01 اسفند 1385, 10:22 صبح
این کار حوصله و وقت می خواد که من ندارم !

به MSDN یا Win32API Reference مراجعه کنید و دستور OpenPrinter رو باز کنید و مطالعه ...
اسم Structure هم DEVMODE هست که خیلی پیچیده هست
ولی نیازی نیست که همش رو پر کنید فقط dmFields رو با DM_DUPLEX پر کنید و بقیه اش رو هم با دستورات API باید سند رو چاپ کنید.

Ghasem_M
سه شنبه 01 اسفند 1385, 12:32 عصر
این کار حوصله و وقت می خواد که من ندارم !

به MSDN یا Win32API Reference مراجعه کنید و دستور OpenPrinter رو باز کنید و مطالعه ...
اسم Structure هم DEVMODE هست که خیلی پیچیده هست
ولی نیازی نیست که همش رو پر کنید فقط dmFields رو با DM_DUPLEX پر کنید و بقیه اش رو هم با دستورات API باید سند رو چاپ کنید.

از راهنمایتون متشکرم لطف کردید