PDA

View Full Version : سوال: رسم خط جهت دار



aapalireza
دوشنبه 01 فروردین 1390, 00:20 صبح
سلام
من برنامه ای پیرامون گراف ها می خواهم بنویسم
گراف ها جهت دارند
من خطوط ساده می تواتم رسم کنم,
آیا راهی است که بتوانن خط جت دار (با فلش) بین دو نقطه رسم کرد؟!
ممنون

Arman_1367
دوشنبه 01 فروردین 1390, 11:30 صبح
این یک نمونه از روشهایی هست که من بیشتر برا اینجور کارا دوست دارم یکم باید ریاضی دوران دبیرستان رو دوره بکنیم چیز خاصی نداره :

public double RadToDeg(double radians)
{
return radians * (180 / Math.PI);
//return radians;
}

public double GetAngle(double x1,double x2,double y1,double y2)
{
double t;
if (x2 - x1 == 0)
{
if (y2 - y1 == 0)
t = 90;
else
t = -90;
}
else
{
t = RadToDeg(Math.Atan((y2 - y1) / (x2 - x1)));
if ((t < 0) && (x2 - x1 < 0)) t = 180 + t;
else
if (t > 0 && (x2 - x1 < 0)) t = 180 + t;
else
if (t == 0 && x2 - x1 < 0) t = 180;

}
return t;
}
public double DegToRad(double Degrees)
{
return Degrees * (Math.PI / 180); ;
}

public void DrawFlesh(Graphics g, Pen p, PointF p1, PointF p2,int degree,int arr)
{
double a = GetAngle(p2.X, p1.X, p2.Y, p1.Y);
PointF pt1 = new PointF((float)(p2.X + arr * Math.Cos(DegToRad(a + degree))),(float)(p2.Y+arr*Math.Sin(DegToRad(a+deg ree))));
PointF pt2=new PointF((float)(p2.X+arr*Math.Cos(DegToRad(a-degree))),(float)(p2.Y+arr*Math.Sin(DegToRad(a-degree))));
GraphicsPath gp = new GraphicsPath();
gp.StartFigure();
gp.AddLine(p2, pt1);
gp.AddLine(pt1, pt2);
gp.AddLine(pt2, p2);
gp.CloseAllFigures();
SolidBrush sb = new SolidBrush(p.Color);
g.FillPath(sb, gp);
gp.Dispose();
sb.Dispose();
//at the end draw the line
g.DrawLine(p, p1, p2);
}
اینم یک نمونه آزمایش از تست تابع :

Pen p=new Pen(Color.Red);
Graphics g=this.CreateGraphics();
Point p1=new Point(10,10);
Point p2=new Point(100,100);
DrawFlesh(g,p,p1,p2,20,40);

فقط چند تا نکته اولین ورودی تابع جایگاهی هست که باید روی آن رسم صورت بگیرد
دومین ورودی قلمی هست که برای رسم استفاده می شود
سومین و چهارمین ورودی مختصات ابتدا و انتها فلش هست
و پنجمین ورودی اندازه زاویه انحراف سر فلش نصب به خط هست
آخرین ورودی ارتفاع سر فلش روی خط فلش می باشد.

عیدتون مبارک و انشا الله سال خوبی داشته باشید.
موفق باشید.

exlord
دوشنبه 01 فروردین 1390, 11:41 صبح
این یک نمونه از روشهایی هست که من بیشتر برا اینجور کارا دوست دارم یکم باید ریاضی دوران دبیرستان رو دوره بکنیم چیز خاصی نداره
خود .net امکان رسم خطوط منحنی و جهت دار رو میده .... نیازی نیست اینقدر کد بنوبسین ...
گراف جهت دار (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1017922&highlight=#post1017922)

Arman_1367
دوشنبه 01 فروردین 1390, 19:35 عصر
خواهش می کنم منم نگفتم نداده که گفتم این روش رو من بیشتر دوست دارم.
چرا می زنی خب ؟:گریه:

aapalireza
دوشنبه 01 فروردین 1390, 21:55 عصر
خود .net امکان رسم خطوط منحنی و جهت دار رو میده .... نیازی نیست اینقدر کد بنوبسین ...
گراف جهت دار (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1017922&highlight=#post1017922)


ممنون,
سورس کامل و اجرایی نیست, میشه کاملش را بگذارید؟
میشه توضیح درباره ی استفاده اش هم بدهید؟
ممنون

exlord
سه شنبه 02 فروردین 1390, 12:15 عصر
ممنون,
سورس کامل و اجرایی نیست, میشه کاملش را بگذارید؟
میشه توضیح درباره ی استفاده اش هم بدهید؟
ممنون
کامله ... خودتونو تنبل عادت ندین ... یه پروژه درست کن و فایل ها رو بهش add کن ...

aapalireza
سه شنبه 02 فروردین 1390, 17:26 عصر
کامله ... خودتونو تنبل عادت ندین ... یه پروژه درست کن و فایل ها رو بهش add کن ...
قبل از مطرح کردن خیلی کردک این کار را بکنم!
آیا میشه آموزش این کار را بدهید؟
چه جوری add بدهم و فرم desighn را بسازم
اگر چند ساعت هم طول بکشه میکنم؛ فقط باید بلد باشم :)
ممنون

exlord
سه شنبه 02 فروردین 1390, 17:40 عصر
قبل از مطرح کردن خیلی کردک این کار را بکنم!
آیا میشه آموزش این کار را بدهید؟
چه جوری add بدهم و فرم desighn را بسازم
اگر چند ساعت هم طول بکشه میکنم؛ فقط باید بلد باشم :)
ممنون
روی پروژه راست کلیک کن و Add Exicting Item رو بزن و این فایل هارو انتخاب کن ... اینا 2 تا فرم هستن ... توی program.cs هم new Form1() رو بکن new matristograf()

aapalireza
سه شنبه 02 فروردین 1390, 21:43 عصر
روی پروژه راست کلیک کن و Add Exicting Item رو بزن و این فایل هارو انتخاب کن ... اینا 2 تا فرم هستن ... توی program.cs هم new Form1() رو بکن new matristograf()

ممنون از راهنمایی های مفیدتان؛
من به فرموده ی شما عمل کردم و فرم ها را اضافه کردم,
reference مورد نظر که presentationCore بود را هم اضافه کردم
اما هنگامی که تغییرات را ی خواهم در programm.cs اعمال کنم, فرم ها را نشناخته و نمی شه new کرد!
اگر میشه مرا را راهنمایی کنید
ممنون

exlord
سه شنبه 02 فروردین 1390, 22:04 عصر
namespace میخواد ...
CSharp.matristograf