شاطر
اذهب الى الأسفل
عدد المساهمات : 134
تاريخ التسجيل : 08/10/2012
معاينة صفحة البيانات الشخصي للعضو

الدرس الرابع طباعة الصور من خلال اداة PrintDocument

في الإثنين أكتوبر 15, 2012 9:44 am
طباعة صورة من خلال أداة PrintDocument
سنحاول فى هذا الدرس ان شاء الله تنفيذ مشروع يتعرض الصور ويمكن من طباعتها بأحجام مخصصة وبمحاذاة مخصصة
متطلبات الشروع
الأداوات المطلوبة
Form
PictureBox- سمها pic - خاصية sizemode اجعلها zoom
Panel - سمها pnl
GroupBox - سمها grb_align_v
GroupBox - سمها grb_align_h
GroupBox - سمها grb_size
TextBox - سمها txt_width
TextBox - سمها txt_hight
RadioButton - سمها rdo_top
RadioButton - سمها rdo_middle
RadioButton - سمها rdo_bottom
RadioButton - سمها rdo_center
RadioButton - سمها rdo_right
RadioButton - سمها rdo_left
PrintDocument - سمها prnt_doc
PrintPreviewDialog - سمها prnt_prev
Button - سمها btn_prnt
Button - سمها btn_prev
Button - سمها btn_import_pics

اضبط خاصية document للأداة Prnt_prev الى prnt_doc

فى مكان التعريفات العامة declaration عرف المتغيرين الاتيين

رمز برمجي:
'متغير يستقبل عرض الصورة
Dim size_width_pic As Single
'متغير يستقبل ارتفاع الصورة
Dim size_hight_pic As Singleفى مكان التعريفات العامة declaration قم بانشاء الاجراء التالى والذى يضبط عرض وارتفاع الصورة

رمز برمجي:
Sub set_size()
'ضبط عرض الصورة طبقا لادخالات المستخدم او ضبطها على 15 سم ان لم يقم بادخال شئ
If Val(txt_wdth.Text) = 0 Then size_width_pic = 15 * 10 Else size_width_pic = Val(txt_wdth.Text) * 10
'ضبط ارتفاع الصورة طبقا لادخالات المستخدم او ضبطها على 15 سم ان لم يقم بادخال شئ
If Val(txt_hight.Text) = 0 Then size_hight_pic = 15 * 10 Else size_hight_pic = Val(txt_hight.Text) * 10
End Subفى حدث click لزر فتح الصورة اليك الكود التالى

رمز برمجي:
Private Sub btn_import_pics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_import_pics.Click
'تعريف متغير من نوع فتح ملف للوصول من خلاله الى الصورة
Dim opnpic As New OpenFileDialog
'ضبط خاصية عرض الملفات للمتغير الى انواع الصور المحددة بالكود
opnpic.Filter = "*.jpg|*.jpg|*.bmp|*.bmp|*.gif|*.gif"
'ضبط خاصية مجلد البدء الى مجلد الصور
opnpic.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyPictures
'اظهار مربع الفتح والتأكد ان المستخدم اختار مفتاح موافق منه
If opnpic.ShowDialog() = Windows.Forms.DialogResult.OK Then
'تحميل الصورة التى اختارها المستخدم الى اداة الصور
pic.Load(opnpic.FileName)
'اظهار الحاوية التى تحتوى التحكم فى حجم الصورة ومحاذاتها
pnl.Visible = True
'تمكين ازرار الطباعة والمعاينة
btn_prev.Enabled = True : Btn_prnt.Enabled = True
End If
End Subفى حدث click لزر معاينة الصورة ضع الكود التالى

رمز برمجي:
Private Sub btn_prev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_prev.Click
'اظهار رسالة اذا كان عرض الصورة المختار اكبر من 20 سم او عرضها اكبر من 28 سم
If Val(txt_wdth.Text) > 20 Or Val(txt_hight.Text) > 28 Then
MessageBox.Show("يجب الا يزيد عرض الصورة عن 20 سم " & Chr(13) & "والا يزيد ارتفاع الصورة عن 28 سم", "حجم خارج نطاق الورقة", MessageBoxButtons.OK)
Else
'تشغيل اجراء يضبط عرض وارتفاع الصورة بناء على اختيارات المستخدم
set_size()
'اظهار اداة المعاينة قبل الطباعة
prnt_prev.ShowDialog()
End If
End Subفى حدث change لكل من txt_width و txt_hight اكتب الكود التالى وهو خاص بتشغيل اجراء ضبط ابعاد الصورة

رمز برمجي:
Private Sub txt_wdth_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_wdth.TextChanged
set_size()
End Subرمز برمجي:
Private Sub txt_hight_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_hight.TextChanged
set_size()
End Subفى حدث click لزر طباعة الصورة ضع الكود التالى

رمز برمجي:
Private Sub Btn_prnt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_prnt.Click
If Val(txt_wdth.Text) > 20 Or Val(txt_hight.Text) > 28 Then
MessageBox.Show("يجب الا يزيد عرض الصورة عن 20 سم " & Chr(13) & "والا يزيد ارتفاع الصورة عن 28 سم", "حجم خارج نطاق الورقة", MessageBoxButtons.OK)
Else
set_size()
prnt_doc.Print()
End If
End Subفى حدث print_page لأداة prnt_doc ( وهو الحدث المسئول عن تنفيذ عملية الطباعة ) اكتب الكود التالى

رمز برمجي:
Private Sub prnt_doc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles prnt_doc.PrintPage
''رقم 23.8 يمثل العرض بالسم و10 تحويله الى مليمتر و3.94 يمثل تحويل الملمتر الى طيقة قياس الشاشة
Dim wdth_lin As Single = 20 * 10 * 3.94
Dim hght_lin As Single = 28 * 10 * 3.94
Dim lft As Single
Dim tp As Single

'تحديد الهامش بناء على اختيار المحاذاة
'محاذاة الافقية وسط
If rdo_center.Checked = True Then
'هنا يتم طرح عرض الصفحة الكلى من عرض الصورة ثم القسمة على 2
'بالنسبة للضرب فى الرقم 3.94 لتحويل القيمة الاتى بالسم الى قياس حدود الصفحة
'ثم القسمة مرة اخرى فى الرقم 3.94 لاعادة تحويل القياس الى سم
'اذا كانت المحاذاة الافقية - وسط
lft = ((e.PageBounds.Width - size_width_pic * 3.94) / 2) / 3.94
End If

'جعل قيمة الهامش الايسر نصف سم اذا كانت المحاذاة الافقية - شمال
If rdo_left.Checked = True Then lft = 0.5 * 10

'جعل فيمة الهامش الايسر عبارة عن الفرق بين عرض الورقة وعرض الصورة اذا كانت الحاذاة الافقية يمين
If rdo_right.Checked = True Then
lft = (e.PageBounds.Width - size_width_pic * 3.94) / 3.94
End If


'اذا كانت المحاذاة الرأسية - منتصف
If rdo_middle.Checked = True Then
'هنا يتم طرح ارتفاع الصورة الكلى من ارتفاع الصفحة ثم القسمة على 2
'بالنسبة للضرب فى الرقم 3.94 لتحويل القيمة الاتى بالسم الى قياس حدود الصفحة
'ثم القسمة مرة اخرى فى الرقم 3.94 لاعادة تحويل القياس الى سم
tp = ((e.PageBounds.Height - size_hight_pic * 3.94) / 2) / 3.94
End If

'جعل الهامش العلوى نصف سم اذا كانت المحاذاة الرأسية علوى
If rdo_top.Checked = True Then tp = 0.5 * 10

If rdo_bottom.Checked = True Then
'جعل فيمة الهامش الايسر عبارة عن الفرق بين ارتفاع الورقة وارتفاع الصورة اذا كانت الحاذاة الرأسية اسفل
tp = (e.PageBounds.Height - size_hight_pic * 3.94) / 3.94
End If


''تغييير قياس الصفحة الى مليمتر
e.Graphics.PageUnit = GraphicsUnit.Millimeter
'امر طباعة الصورة
e.Graphics.DrawImage(pic.Image, lft, tp, size_width_pic, size_hight_pic)



End Sub
الرجوع الى أعلى الصفحة
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى