تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[كود] مثال عن رسم خط مستقيم بين نقطتين
#1
السلام عليكم

انا اريد ان انشئ خط مستقيم بين نقطتين  في الصفحة  في اي مكان

سنضع قيمة متغير clic  هي 1 اي الضغطة الاولى ..........لما نضغط مرة اخرى ستصبح 2

في clic 1  سنشئ نقطة في الموضوع الاول للضغطة و نسجل الموقع في لبيال 1

PHP كود :
    If clic 1 Then
       
    
 pnt 
= New Label()
 
           Controls.Add(pnt)
 
           pnt.Text "●"
 
           pnt.Font = New Font("Tahoma"10FontStyle.Bold)
 
           pnt.Size = New Size(2020)
 
           Dim x Cursor.Position.Left pnt.Width
            Dim y 
Cursor.Position.Top pnt.Height 31
            pnt
.Location = New Point(xy)
 
           Label1.Text " _ " 


و نضيف 1 لقيمة المتغير  clic

PHP كود :
clic += 

عندها سننشء نقطة اخرى 

PHP كود :
ElseIf clic 2 Then
            pnt2 
= New Label()
 
           Controls.Add(pnt2)
 
           pnt2.Text "●"
 
           pnt2.Font = New Font("Tahoma"10FontStyle.Bold)
 
           pnt2.Size = New Size(2020)
 
           Dim x2 Cursor.Position.Left pnt2.Width
            Dim y2 
Cursor.Position.Top pnt2.Height 31
            Label2
.Text x2 " _ " y2
            pnt2
.Location = New Point(x2y2)
 
           Dim p1 pnt.Location
            Dim p2 
pnt2.Location 


ثم ننشئ خطا مستقينما بينهما
PHP كود :
 g.DrawLine(Pens.Redp1p2

كي نعيد الكرة مرة اخرى اي ننشء خطوط اخرى ما علينا الا ان نرجع القيمة  clic الى 1 
PHP كود :
clic 

من اجل ذلك يجب ان نستدعي دالة الرسم
PHP كود :
Imports System.Drawing.Graphics 

و نعلن عن المتغيرات في البداية 
PHP كود :
 Dim g As Graphics
    Dim clic 
As Integer 1
    Dim pnt
pnt2 As Label 

و في بداية ظهور الصفحة  form1_load
PHP كود :
 g CreateGraphics() 


الشكل النهائي



الكود يحتاج الى تعديل ليكون بشكل دقيق ............. لمن يستطيع نكون شاكرين 

الملف للتعديل

https://top4top.io/downloadf-16791lliz1-rar.html


بالتوفيق
 لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
الرد
#2
السبب هو انشاءك ليبلات وهي فكرة ليست جيدة 

يمكنك بكل سهولة رسم دائرة بدون الحاجة لانشاء ليبلات عن طريق FillEllipse

السبب الثاني هو استخدامك Cursor في تحديد مكان الضغط وهذا ليس دقيق اطلاقا ، يمكنك استخدام حدث MouseDown للرسم :





كود :
dim p1 as new point(0,0)
dim p2 as new point(0,0)
  Private Sub Form1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Form1.MouseUp

  If clic = 1 Then
g.FillEllipse(Brushes.Red,e.x - 10 , e.y - 10 , 20 ,20)
p1.x = e.x
p1.y = e.y
Label1.Text = e.x & " _ " & e.y
clic += 1

ElseIf clic = 2 Then
g.FillEllipse(Brushes.Red,e.x - 10 , e.y - 10 , 20 ,20)
p2.x = e.x
p2.y = e.y
Label2.Text = e.x & " _ " & e.y
g.DrawLine(Pens.Red, p1, p2)
clic = 1
end if
end sub

لم اقم بتجريبه ولكن ان شاء الله يعمل
الرد
#3
كود :
Public Class Form1
   Dim g As Graphics
   Dim clic As Integer = 1
   Dim pnt, pnt2 As Point

   Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp
       If e.Button = MouseButtons.Left Then
           If clic = 1 Then
               pnt = New Point(e.X, e.Y)
               clic += 1
               g.FillEllipse(Brushes.Black, New Rectangle(pnt.X - 4, pnt.Y - 4, 7, 7))
               Label1.Text = e.Location.ToString
           ElseIf clic = 2 Then
               pnt2 = New Point(e.X, e.Y)
               g.FillEllipse(Brushes.Black, New Rectangle(pnt2.X - 4, pnt2.Y - 4, 7, 7))
               '==================================================================='
               g.DrawLine(Pens.Red, pnt, pnt2)
               clic = 1
               Label2.Text = e.Location.ToString
           End If
       End If
   End Sub

   Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
       g = CreateGraphics()
       g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
   End Sub

End Class
الرد
#4
جزاكم الله عنا كل خير .
عندي ملاحظة بسيطة الا و هي : لماذا لا نستخدم الحدث دبل كليك لتحديد اول نقطة و الحدث ماوس اب لتحديد ثاني نقطة .
اي دبل كليك و سحب الى النقطة الثانية ثم يتفعل الحدث ماوس اب تلقاءي لرسم النقة الثانية و الوصل بينهما كالبرامج الاحترافية .
و الله الموفق .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر




الرد
#5
السلام عليكم ورحمة الله وبركاته
كم انا سعيد لرؤيتي امثلة الغرافيك في المنتدى حيث ندرتها والقليل من الاخوة من يسير في هذا الاتجاه
بارك الله فيك اخي عبد الهادي على ماقدمته
وبارك الله بكم اخوتي انس محمود - عيد مبارك - عاصم شاهين
ومن باب المشاركة اضع لكم هذا المثال وهو رسم مستقيم بالماوس 
ضغط وسحب ثم افلات
هذه جزئية من مشروعي الذي عملت عليه في فترة سابقة وهو برنامج الرسام 
كنت اتمنى وجود قسم خاص بالغرافيك في المنتدى


الملفات المرفقة صورة/صور
   

.zip   LineWithMouse.zip (الحجم : 77.35 ك ب / التحميلات : 12)
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
#6
الف شكر اخي ابراهيم على هذا المثال .
ما اعجبني في الموضوع انه يمكن ان تغير مكان الخط المرسوم بتغيير مكان اليبل اي اعادة رسمه بعد تغيير اماكن الليبل الموضوعة على البنل .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر




الرد
#7
اخي عاصم برمجة الغرافيك عالم واسع جدا ويلزمه قدر لابأس به من الرياضيات 
ويفضل من له معرفة بالرسم او يعمل في برامج الغرافيك وكل الشركات العاملة في برمجيات الغرافيك لديها عدد من المستخدمين 
يعملون بالغرافيك كمهنة وهي تعطيهم البرمجبات لاختبارها كما انها تستمع لارائهم وتأخذ بنصائحهم وافكارهم ومتطلباتهم التي يرغبون في توفرها في البرنامج

وكما تعلم هذه الشركات تمتلك مبرمجين مخضرمين من ذوي الخبرة العالية 

هههه (نحن نقطة امام بحرهم)

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







الرد
#8
و الله سعادة كبيرة ان اجد هذا الكم الهائل من التجاوب بالاضافة
--------- ليس كبعض مشاركات مشكووووووووووووووووووووووور او شكررررررررررا -------
متابع معكم و ساستعمل كل الاقتراحات
بارك الله فيكم
--------------
طبعا يمكن استعمال الفكرة في تمارين الربط بين اجابتين مثلا او في تمارين الرياضيات ......الخ
و من خلال رددوكم -- اوحي الي --- او الهمت الكثير من المشاريع ساجد لها طريقا في القريب العاجل

(06-08-20, 08:32 PM)عيد مبارك كتب :
كود :
Public Class Form1
   Dim g As Graphics
   Dim clic As Integer = 1
   Dim pnt, pnt2 As Point

   Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp
       If e.Button = MouseButtons.Left Then
           If clic = 1 Then
               pnt = New Point(e.X, e.Y)
               clic += 1
               g.FillEllipse(Brushes.Black, New Rectangle(pnt.X - 4, pnt.Y - 4, 7, 7))
               Label1.Text = e.Location.ToString
           ElseIf clic = 2 Then
               pnt2 = New Point(e.X, e.Y)
               g.FillEllipse(Brushes.Black, New Rectangle(pnt2.X - 4, pnt2.Y - 4, 7, 7))
               '==================================================================='
               g.DrawLine(Pens.Red, pnt, pnt2)
               clic = 1
               Label2.Text = e.Location.ToString
           End If
       End If
   End Sub

   Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
       g = CreateGraphics()
       g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
   End Sub

End Class

روعة ...............دقيق و فعال
شكرا على الاضافة و التعديل

(06-08-20, 08:08 PM)Anas Mahmoud كتب : السبب هو انشاءك ليبلات وهي فكرة ليست جيدة 

يمكنك بكل سهولة رسم دائرة بدون الحاجة لانشاء ليبلات عن طريق FillEllipse

السبب الثاني هو استخدامك Cursor في تحديد مكان الضغط وهذا ليس دقيق اطلاقا ، يمكنك استخدام حدث MouseDown للرسم :





كود :
dim p1 as new point(0,0)
dim p2 as new point(0,0)
  Private Sub Form1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Form1.MouseUp

  If clic = 1 Then
g.FillEllipse(Brushes.Red,e.x - 10 , e.y - 10 , 20 ,20)
p1.x = e.x
p1.y = e.y
Label1.Text = e.x & " _ " & e.y
clic += 1

ElseIf clic = 2 Then
g.FillEllipse(Brushes.Red,e.x - 10 , e.y - 10 , 20 ,20)
p2.x = e.x
p2.y = e.y
Label2.Text = e.x & " _ " & e.y
g.DrawLine(Pens.Red, p1, p2)
clic = 1
end if
end sub

لم اقم بتجريبه ولكن ان شاء الله يعمل

ما شاء الله تم التعديل بفضل فكرتك و تفعيلها من خلال عيد مبارك ........اسمه جميل على فكرة لان كل السنة اعياد ان شاء الله بدون احزان
 لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
الرد


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مثال] مثال عن رسم دوائر بشكل جميل عبد الهادي بهاب 0 85 09-09-20, 01:49 AM
آخر رد: عبد الهادي بهاب
  مثال على عمل qr code و قرائة ال qr code من ملف صورة او من الشاشة mohamed haroon 4 2,242 08-09-20, 10:48 AM
آخر رد: Emad aldeen
  مثال بسيط للنقل المواد بين المخازن ارجو ان يعجبكم خالد كامل1 1 136 27-08-20, 10:35 PM
آخر رد: خالد كامل1
  مثال استيراد اى ملف اكسيل وتصدير البيانات الى ملف اكسيل new_programer 2 922 05-08-20, 07:31 PM
آخر رد: عبد الهادي بهاب
  [Acces2007] مثال على شجرة محاسبية Mohamad Anan 2 417 30-07-20, 02:38 PM
آخر رد: المعترس
  مثال في عمل النسخة الاحتياطية مع ضغط الملف asemshahen5 0 184 26-07-20, 02:09 AM
آخر رد: asemshahen5
  مثال لحمايه ملفات البرنامج من النسخ alshandodi 3 525 17-07-20, 12:28 PM
آخر رد: ibra9009
  [مشروع] مثال للعمل مع الـBackgroundWorker سعود 10 1,504 09-07-20, 06:24 AM
آخر رد: سعود
  [VB.NET] تم تحديث الرابط - مثال برنامج اقتطاع الفيديو معاند الحظ 6 819 07-07-20, 01:45 AM
آخر رد: معاند الحظ
  مثال صندوق نص RichTextBox محسن معاند الحظ 0 246 24-06-20, 03:52 AM
آخر رد: معاند الحظ

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


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