تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
التحكم فى ضبط حواف الورقة فى طباعة الفورم
#1
السلام عليكم اساتذتنا 

هذا الكود يقوم بطباعة الفورم مباشرتا ولكن يوجد مشكلة بحواف الورقة 

اول الطباعة تكون بعد اول الورقة بحوالى 4 سنتى

اريد ان اتحكم فى الحواف لطباعة الورقة و شكرا


الكود


Imports System.Drawing.Printing

Public Class Form1

    Dim WithEvents mPrintDocument As New PrintDocument
    Dim mPrintBitMap As Bitmap


    Private Sub m_PrintDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles mPrintDocument.PrintPage

    

        ' Draw the image centered.
        Dim lWidth As Integer = e.MarginBounds.X + (e.MarginBounds.Width - mPrintBitMap.Width) \ 1.5
        Dim lHeight As Integer = e.MarginBounds.Y + (e.MarginBounds.Height - mPrintBitMap.Height) \ 1.5
        e.Graphics.DrawImage(mPrintBitMap, lWidth, lHeight)

        ' There's only one page.
        e.HasMorePages = False
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

      
        ' Copy the form's image into a bitmap.
        mPrintBitMap = New Bitmap(Me.Width, Me.Width)
        Dim lRect As System.Drawing.Rectangle
        lRect.Width = Me.Width
        lRect.Height = Me.Width
        Me.DrawToBitmap(mPrintBitMap, lRect)


        ' Make a PrintDocument and print.
        mPrintDocument = New PrintDocument
        mPrintDocument.Print()
    End Sub

  
End Class


يوجد مثال فى المرفقات


الملفات المرفقة
.rar   طباعة الفورم.rar (الحجم : 71.39 ك ب / التحميلات : 50)
الرد
تم الشكر بواسطة:
#2
شكرا لكم اخوتى على عدم الرد ولقد وفقنى الله فى البحث و لقد وجدة ضالتى و اعتقد افضل كود لطباعة الفورم 

الكود فى هذا الرابط http://arbtech.forumegypt.net/t28-topic

الكود منقول


Private Declare Function BitBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal _
hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As _
Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal _
hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, _
ByVal dwRop As System.Int32) As Long
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)
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)
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
Private Sub PrintButton_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles PrintButton.Click
CaptureScreen()
PrintDocument1.Print()
End Sub
الرد
تم الشكر بواسطة: sendbad100
#3
اعتذر لك بس ما اعرف حلل للمشكلة
الرد
تم الشكر بواسطة:
#4
(14-03-17, 09:42 PM)supercool999 كتب : اعتذر لك بس ما اعرف حلل للمشكلة

لا عليك اخى لقد تم حل المشكلة و الكود فى الرد
الرد
تم الشكر بواسطة: أبووسم
#5
شكراً على الكود أخي الغالي ،،

و لكن الكود لا يطبع الصفحة كاملة ؟

يطبع جزء منها فقط
الرد
تم الشكر بواسطة:
#6
(16-03-17, 08:27 PM)أبووسم كتب : شكراً على الكود أخي الغالي ،،

و لكن الكود لا يطبع الصفحة كاملة ؟

يطبع جزء منها فقط

اخى اضبط size الفورم اجعل width 796 اما ال Height اجعله اى مقاس حسب طول الفورم
الرد
تم الشكر بواسطة: أبووسم
#7
شكراً اخي نبيل و الله يعطيك العافية
الرد
تم الشكر بواسطة:
#8
لأن الفورم مصمم بحيث ان أبعاده تتناسب مع ابعاد شاشة الكمبيوتر
عليك ان تستخدم مقياس رسم بحيث تضبط صورة الفورم لتتناسب مع ابعاد ورقة الطباعة
مثلا تاخذ صورة الفورم ثم تعيد رسمها بأبعاد أقل قليلا علي صورة فاضية بابعاد اخري اقل من ابعاد صورة الفورم
ثم ترسم تلك الصورة علي ورقة الطباعة

الخلاصة أنت تحتاج مقياس رسم مناسب و حينها ستكتشف أن كل الكود الخاص بك و الخاص باستخدام دوال API يمكن الاستغناء عنه
الرد
تم الشكر بواسطة:
#9
هذا هو الكود الخاص بك بعد التعديل عليه قليلا


PHP كود :
Imports System.Drawing.Printing

Public Class Form1

    Dim WithEvents mPrintDocument 
As New PrintDocument
    Dim mPrintBitMap 
As Bitmap Nothing

    Private Sub m_PrintDocument_PrintPage
(ByVal sender As ObjectByVal e As System.Drawing.Printing.PrintPageEventArgsHandles mPrintDocument.PrintPage

        Dim w 
As Integer e.MarginBounds.+ (e.MarginBounds.Width mPrintBitMap.Width) \ 1.5
        Dim h 
As Integer e.MarginBounds.+ (e.MarginBounds.Height mPrintBitMap.Height) \ 1.5
        Dim scale 
As Double 0.7
        e
.Graphics.DrawImageUnscaled(mPrintBitMapscalescale)

 
       ' There's only one page.
 
       e.HasMorePages False
    End Sub

    Private Sub Button1_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        mPrintBitMap 
= New Bitmap(CaptureFormImage)
 
       mPrintDocument = New PrintDocument
        mPrintDocument
.Print()
 
   End Sub

    Private 
Function CaptureFormImage() As Bitmap
        Dim formRect 
As Rectangle = New Rectangle(Me.Bounds.LocationMe.Bounds.Size)
 
       Dim pt As Point = New Point(Me.Location.XMe.Location.Y)
 
       Dim r As Rectangle TrnasformRect(ptformRect)
 
       Dim formBitmap As Bitmap = New Bitmap(r.Widthr.Height)
 
       Me.DrawToBitmap(formBitmapr)
 
       Return formBitmap
    End 
Function

 
   Public Function TrnasformRect(offset As PointoriginalRect As Rectangle) As Rectangle
        Return 
New Rectangle(originalRect.offset.XoriginalRect.offset.YoriginalRect.WidthoriginalRect.Height)
 
   End Function

End Class 
الرد
تم الشكر بواسطة: sendbad100
#10
(19-03-17, 06:36 AM)silverlight كتب : هذا هو الكود الخاص بك بعد التعديل عليه قليلا


PHP كود :
Imports System.Drawing.Printing

Public Class Form1

    Dim WithEvents mPrintDocument 
As New PrintDocument
    Dim mPrintBitMap 
As Bitmap Nothing

    Private Sub m_PrintDocument_PrintPage
(ByVal sender As ObjectByVal e As System.Drawing.Printing.PrintPageEventArgsHandles mPrintDocument.PrintPage

        Dim w 
As Integer e.MarginBounds.+ (e.MarginBounds.Width mPrintBitMap.Width) \ 1.5
        Dim h 
As Integer e.MarginBounds.+ (e.MarginBounds.Height mPrintBitMap.Height) \ 1.5
        Dim scale 
As Double 0.7
        e
.Graphics.DrawImageUnscaled(mPrintBitMapscalescale)

 
       ' There's only one page.
 
       e.HasMorePages False
    End Sub

    Private Sub Button1_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        mPrintBitMap 
= New Bitmap(CaptureFormImage)
 
       mPrintDocument = New PrintDocument
        mPrintDocument
.Print()
 
   End Sub

    Private 
Function CaptureFormImage() As Bitmap
        Dim formRect 
As Rectangle = New Rectangle(Me.Bounds.LocationMe.Bounds.Size)
 
       Dim pt As Point = New Point(Me.Location.XMe.Location.Y)
 
       Dim r As Rectangle TrnasformRect(ptformRect)
 
       Dim formBitmap As Bitmap = New Bitmap(r.Widthr.Height)
 
       Me.DrawToBitmap(formBitmapr)
 
       Return formBitmap
    End 
Function

 
   Public Function TrnasformRect(offset As PointoriginalRect As Rectangle) As Rectangle
        Return 
New Rectangle(originalRect.offset.XoriginalRect.offset.YoriginalRect.WidthoriginalRect.Height)
 
   End Function

End Class 

شكرا على مجهودك اخى لقد تم ما اريد و جزاكم الله خيرا
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  طباعة مربعات النص من علي النموذج مباشرة السيد الجوهري 4 78 18-04-18, 08:55 AM
آخر رد: السيد الجوهري
  المساعدة - في حل مشكلة حجم الفورم Mohamed El Meziani 1 57 18-04-18, 02:39 AM
آخر رد: ملهمـ
  كيف يمكن طباعة مربعات النص الموجودة علي الفورم مباشرة السيد الجوهري 2 80 12-04-18, 11:37 PM
آخر رد: السيد الجوهري
  سؤال في اسم الفورم اثناء التصميم والتشغيل emamtron2014 1 54 11-04-18, 06:27 PM
آخر رد: aftfm
Information [VB.NET] طباعة ناتج المقارنة Salma Soliman 2 55 10-04-18, 10:16 PM
آخر رد: Salma Soliman
  [سؤال] هل يوجد طريقة لاطفاء بعض وظائف الويندوز من خلال الفورم؟ Iman Mohamed Omran 1 70 30-03-18, 08:30 PM
آخر رد: سعود الشامان
  [سؤال] كيفيفة تشغيل الفورم فقط في وضع المسؤول ؟ Iman Mohamed Omran 1 74 29-03-18, 04:54 AM
آخر رد: سعود الشامان
Photo [سؤال] كيفية وضع اختصارات االازرار داخل الفورم لتنقل بين Buttons ؟ Iman Mohamed Omran 6 253 22-03-18, 08:14 PM
آخر رد: Iman Mohamed Omran
  [VB.NET] سؤال حول خصائص الفورم hadeel 2 102 21-03-18, 01:08 AM
آخر رد: محمود صالح
  ارجو المساعده في كود تغيير خلفية الفورم emamtron2014 0 65 19-03-18, 04:54 AM
آخر رد: emamtron2014

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم