31-05-19, 04:15 AM
(31-05-19, 02:59 AM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
بفضل من الله ورغبة في مني في دخول عالم الغرافيك مع الفيجوال بيسك نت .. بدأت اولى الخطوات وعملت مثال لرسم مستطيل بالاعتماد على احداثيات الماوس وتلوين الاطار والتعبئة بناء على تحديدات كيفية وقد اعتمدت على مخزوني البرمجي مما علمني اياه [b][b]الله [/b]وأهل العلم بدون معرفتي بكلاسات خاصة بالرسم وقد وفقت الى ذلك ولكن ليس كما ارغب وأحب .[/b]
والسؤال الراهن هو كيف اجلب احداثيات الماوس بالنسبة لكونترول وليكن PictureBox مثلا بحيث تبدأ الاحداثيات من الـ location الخاص بـ (PictureBox (0:0 لأن في المثال الاحداثيات تكون لشاشة الكومبيوتر وتحايلت عليها لجلب احداثياتها في الفورم .. اتمنى من الاعضاء الذين لديهم خبرة في مجال الغرافيك فضلا وتكرما القاء نظرة على المثال ..
كما اهيب بكل من عنده روابط او فيديوهات عن الرسم بالفيجوال أن يضعها مشكورا ويجعلها الله في ميزان حسناته ليستفيد منها بقية الاعضاء ممن لهم اهتمام بهذا الجانب من البرمجة
دمتم بكل خير ... رمضان كريم والعيد على الابواب وكل عام وأنتم بخير والى الله أقرب
الكود السابق ان الرسم ليس ثابت فلو قمن بتصغير الفورم خارج اعادته لن تجد الرسم
لهذا لابد من استخدام الحدث paint
هذا تعديل الحدث mousrmove مع اضاف الحدث paint
Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
If e.Button = MouseButtons.Left Then
' جلب احداثيات رفع الماوس
secondPoint = e.Location
Label2.Text = "x :" & secondPoint.X & " " & "y :" & secondPoint.Y
PictureBox1.Invalidate()
End If
End Sub
Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
' جلب احداثيات رسم المستطيل
Dim rect As New Rectangle(firstPoint.X, firstPoint.Y, (secondPoint.X - firstPoint.X), (secondPoint.Y - firstPoint.Y))
Label3.Text = "Width :" & rect.Width & " " & "Heigh :" & rect.Height
' التعبئه اولا
Dim Sbrush As New SolidBrush(fillColor)
e.Graphics.FillRectangle(Sbrush, rect)
' الاطار ثانيا
Dim PLinePen As New Pen(drawColor, Nmr_StrokPen.Value)
e.Graphics.DrawRectangle(PLinePen, rect)
End Sub
