تقييم الموضوع :
  • 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 ك ب / التحميلات : 16)
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
#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

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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مثال] مثال لنسخ وإستعادة قاعدة البيانات ( تحديث) نسخ تلقائي للقاعدة حسب اليوم والساعة جميل علي 81 48,092 10-02-24, 11:26 AM
آخر رد: محمد العموري
  مثال استيراد اى ملف اكسيل وتصدير البيانات الى ملف اكسيل new_programer 3 3,426 07-12-22, 12:19 PM
آخر رد: hoda299
  [VB.NET] مثال بسيط عن كيفية عمل برنامج المصحف كمثال موقع [ quran.ksu.edu.sa ] elgokr 12 8,934 14-10-22, 12:59 AM
آخر رد: spiky
  مثال على عمل qr code و قرائة ال qr code من ملف صورة او من الشاشة mohamed haroon 6 6,487 02-09-22, 01:48 AM
آخر رد: Mahmoud41
  مثال إضافة وأزالة البرنامج من قائمة بدء التشغيل سيد درويش 0 807 26-08-22, 12:14 PM
آخر رد: سيد درويش
  مثال لعرض الفورم بما يناسب دقة الشاشة سيد درويش 0 1,164 26-08-22, 11:58 AM
آخر رد: سيد درويش
  [مشروع] ابسط مثال تصوير الشاشة وحفظ الصور كلها بملف واحد مع الصوت وباقي التفاصيل سعود 9 2,026 24-07-22, 08:22 PM
آخر رد: سعود
  مثال لصفحة خيارات التقرير مثل البرامج الكبيرة محمود صالح 4 1,942 13-02-22, 11:00 PM
آخر رد: عبدالحميد حسني
  [VB.NET] مثال طريقة جعل البرنامج يعمل مع بداية تشغيل النظام معاند الحظ 2 2,123 03-02-22, 05:20 AM
آخر رد: أبووسم
  مسح الصور وحفظها بلاحقة Pdf او jpg مثال معدل من احدى المشاركات ابراهيم ايبو 0 1,137 20-01-22, 09:50 PM
آخر رد: ابراهيم ايبو

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


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