حفظ WindowsForm  في صورة وطباعتها

قد يواجهنا في الحياة العملية أحيانا مشاكل غريبة، ولا يمكن إكمال المشروع إلا بتخطي هذه المشاكل سواء بطرق موجودة، أو بالالتفاف حولها بطرق قد تبدو غريبة للوهلة الأولى، وهذه الطريقة لنسخ النموذج احدى هذه الطرق الملتفة.

واجهتنا مشكلة طباعة Form على الطابعة بأبعاد مختلفة مع تحديد هذه الأبعاد،  وإمكانية نقلها وطباعتها على طابعات مختلفة، وبعد التفكير توصلنا إلى عدة حلول وكان أبسطها وأقلها كلفة للوقت والجهد تحويل ال Form  لصورة وإمكانية التحكم في أبعادها لاحقا.

بداية الأمر، استخدمنا شيفرة طباعة الشاشة، ومن ثم قمنا باقتصاص حجم الForm منها في صورة كالتالي

Code

Dim ScreenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height) ‘ تحديد أبعاد الشاشة
Dim screenCut As New Bitmap(Width, Height) ‘ تحديد أبعاد الصورة حسب أبعاد الفورم
Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(screenCut) 
g.CopyFromScreen(New Point(Location.X, Location.Y), New Point(0, 0), ScreenSize) ‘ حفظ الشاشة وتخزينها حسب بداية الفورم
screenCut.Save("C:\mainimg.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) ‘ حفظ الصورة

الفكرة بسيطة وهي أن نقوم بطباعة كاملة للشاشة ، ثم نقوم باقتطاع صورة منها وتكون بداية هذه الصورة في نقطة بدء الForm وذلك عبر Location.X, Location.Y ومن ثم نحدد نقطة نهاية الصورة عبر طول وعرض النموذج الحالي، وأخيرا حفظ الصورة.
تبقى قضية واحدة وهي تحديد أبعاد الصورة حسب أبعاد الطباعة المرادة، وذلك للحصول على أفضل أداء، وهنالك عدة طرق لهذا الأمر وأبسطها كالتالي

Code

Dim source As Image = Bitmap.FromFile("C:\screenCut .jpg")
Using dest As New Bitmap(source, (source.Width + source.Width), (source.Height + source.Height))
dest.Save("c:\newimg.jpg")
End Using

حيث يتم جلب الصورة الأولى وثمن ثم مضاعفة أبعادها بجمعها لنفسها مرة أخرى وذلك مثل الضرب في 2، ويمكن إضافة أي تمدد للصورة وذلك بالضرب في الرقم الذي ترغب به ، فمثلا أبعاد الصورة 300*300 ونحن نريدها 450*450 ، وهنا يجب ضرب الطول ب1.5 وكذلك العرض بنفس القيمة وهكذا.
وما قمنا به هو نسخ الشاشة، ومن ثم اقتطاع النموذج منها، ومن ثم التحكم في أبعاد الصورة

وفق الله الجميع

About the author

خليل سليم

Leave a Comment

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.