PDA

View Full Version : مبتدی: ترسیم خط



alireza_tavakol
چهارشنبه 20 آبان 1388, 15:25 عصر
سلام

من می خواهم یک خط ترسیم کنم که از دو نقطه p1 , p2 عبور کند لطفا" راهنمایی فرمایید

نکته : نقطه p1 نقطه شروع خط نیست و نقطه p2 نقطه پایانی خط نیست! به عبارت دیگر فقط می دانم که خط که قرار است رسم شود خطی راست است و از دو نقطه p1 , p2 عبور خواهد کرد و پاره خط نیست که ابتدا و انتها داشته باشد

اگه لازمه سرچ کنم لطف کنید و کلید واژه های مربوطه را بهم معرفی نمایید :خجالت:

saed2006
چهارشنبه 20 آبان 1388, 16:59 عصر
خب دستور ترسیم خط توی سی شارپ که مشخصه
اما بحث شما بیشتر ریاضی هست
کمی در این مورد جستجو کنید

alireza_tavakol
چهارشنبه 20 آبان 1388, 17:49 عصر
من دستور ترسسم خط رو بلدم
public void DrawLine(Pen pen, Point pt1, Point pt2);
اما در این دستور نقطه شروع خط رو pt1 در نظر میگیره و نقطه خاتمه خط رو pt2 در نظر میگیره
ولی من می خواهم خط که رسم میشه با همون شیب در امتداد دو نقطه ادامه پیدا کنه

آیا کسی دستوری از گرافیک ، در زبان C#‎‎ می شناسه که به این شکل خط ترسیم کنه؟
آیا کسی دستوری از گرافیک ، در زبان C#‎‎ می شناسه که یک نقطه دریافت کنه با یک زایه به عنوان شیب خط ، و به این شکل خط رسم کنه؟

با تشکر

saed2006
چهارشنبه 20 آبان 1388, 17:57 عصر
بالاخره باید یک جایی خط شما پایان پیدا کنه؟

alireza_tavakol
چهارشنبه 20 آبان 1388, 18:11 عصر
من می خواهم خط ( نه پاره خط ) رو روی یک فرم ترسیم کنم

پس باید این خط که من دو نقطه از اون رو دارم از ابتدا فرم من ترسیم شود و تا انتهای فرم ادامه داشته باشد (مثلا" می خواهم به این شکل نشان دهم از مثبت بی نهایت تا منفی بی نهایت ادامه دارد )

لطفا به عکسی که ضمیمه کردم نگاه کنید من در این شکل مختصات دو نقطه آبی را دارم و می خواهم خط قرمز رنگ را رسم کنم

saed2006
چهارشنبه 20 آبان 1388, 18:44 عصر
اوکی
حالا شد
شما باید معادله خط رو بدست بیاری
نقطه پایان و شروع خط رو هم که میشه محدوده فرمت
حله دیگه

alireza_tavakol
چهارشنبه 20 آبان 1388, 22:10 عصر
یعنی شما می فرمایید من توسط فرمول زیر معادله خطی که قرار است ترسیم شود را به دست بیارم و بعد به اعضای تمام نقاطی که توی این معادله جواب میده نقطه رسم کنم ؟:متعجب:
Y - y1 = ( (y2 - y1) / (x2 - x1) ) * (X - x1)
به نظر من اصلا" کار منطقی نیست! می دونی باید 1,000,000 نقطه رو چک کنم یا شایدم بیشتر! ( خوب اگه این طور باشه که من دارم نقطه می کشم و اصلا" ربطی به رسم خط نداره ) اگه قرار باشه این کار رو بکنم که از الگوریتم برسنهام استفاده میکنم :گیج:

آیا من درست منظور شما رو متوجه شدم ؟ اگه نظرتون چیز دیگه ای بوده لطفا کمی توضیح دهید.

با تشکر

Reza_Yarahmadi
چهارشنبه 20 آبان 1388, 23:15 عصر
اونقدرها هم محاسبه رابطه سخت نیست!
کد زیر رو امتحان کنید ببینید کارتو راه میندازه یا نه.

Point p1 = new Point(100, 100);
Point p2 = new Point(148, 377);

double dip = (double)(p2.Y - p1.Y) / (double)(p2.X - p1.X);
int Variance = p1.Y - (int)(p1.X * dip);
Point TempPoint1 = new Point(this.Size.Width, (int)(this.Size.Width * dip) + Variance);
Point TempPoint2 = new Point(0, Variance);
graph.DrawLine(new Pen(Color.Blue, 2), TempPoint1, TempPoint2);

saed2006
چهارشنبه 20 آبان 1388, 23:23 عصر
عزیز دل برادر منظور من این نبود
ببین شما میخوای یک خط رو رسم کنی خب واسه اینکار نقطه شروع میخوای و نقطه پایان
خب اینا رو نداری
میخوای بدست بیاری
اوکی
الان چیزی که داری دو تا نقطه هست که از این خط میگذره
خب با توجه به این چیزی که داری و معادله خط اون دو تا مجهولت رو بدست بیار و خلاص
شما باید کاری کنی که کاربر فکر کنه خط بینهایت هست و گرنه واسه ترسیم مجبوری نقطه ابتدایی و پایانی رو بهش بدی