17-10-12, 09:30 PM
كاتب الموضوع : حسام برهان
البرنامج بسيط جداً، وهو موجود بكامله ضمن الحدث Paint لأداة PictureBox على الشكل التالي:
يمكننا باستخدام الطريقة TranslateTransform() إعادة تعيين نقطة الأصل (مبدأ الاحداثيات) للأداة، حيث من المعلوم أن نقطة الأصل لأي أداة تكون في الزاوية اليسرى العليا منها، في مثالنا هذا ستكون نقطة الأصل للأداة في منتصفها.
ثم نحدد زاوية الدوران باستخدام الطريقة RotateTransform() والزاوية مُعطاة بالدرجات، بحيث تكون جهة الدوران بجهة دوران عقارب الساعة.
أخيراً نرسم الصورة على الأداة باستخدام الطريقة DrawImage() التي تحتاج (في أحد أشكالها) إلى وسيطين: الأول هو كائن الصورة المراد رسمها، والثاني إحداثيات الزاوية اليسرى العليا للصورة، والتي ستكون في حالتنا هذه ذات قيم سالبة لكي نجعل نقطة الأصل منطبقة على مركز الصورة.
بمجرد رسم الصورة ستُدوَّر بالزاوية angle (متغير معرف على أنه private).
انظر الملف هنا لمثال على هذا الأمر.
البرنامج بسيط جداً، وهو موجود بكامله ضمن الحدث Paint لأداة PictureBox على الشكل التالي:
كود :
Private Sub picShow_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles picShow.Paint
Dim img As Image
Dim pt As Point
img = New Bitmap("myimage.jpg")
pt = New Point(picShow.Width / 2, picShow.Height / 2)
'Set world transform of graphics object to translate.
e.Graphics.TranslateTransform(pt.X, pt.Y)
'Then to rotate, prepending rotation matrix.
e.Graphics.RotateTransform(angle)
pt = New Point(-img.Width / 2, -img.Height / 2)
e.Graphics.DrawImage(img, pt)
End Sub
ثم نحدد زاوية الدوران باستخدام الطريقة RotateTransform() والزاوية مُعطاة بالدرجات، بحيث تكون جهة الدوران بجهة دوران عقارب الساعة.
أخيراً نرسم الصورة على الأداة باستخدام الطريقة DrawImage() التي تحتاج (في أحد أشكالها) إلى وسيطين: الأول هو كائن الصورة المراد رسمها، والثاني إحداثيات الزاوية اليسرى العليا للصورة، والتي ستكون في حالتنا هذه ذات قيم سالبة لكي نجعل نقطة الأصل منطبقة على مركز الصورة.
بمجرد رسم الصورة ستُدوَّر بالزاوية angle (متغير معرف على أنه private).
انظر الملف هنا لمثال على هذا الأمر.