سلام دوستان
خسته نباشید
من میخوام یک یورز کنترل بنویسم شبیه این با قابلیت های بیشتر
اما اولین بارمه میخوام که یوزر کنترل بنویسم
و زیاد هم گرافیک توی سی شارپ بلد نیستم
کسی می تونه منو راهنمایی کنه ؟
به نظرتون از کجا و چگونه شروع کنم؟
Untitled.jpg
سلام دوستان
خسته نباشید
من میخوام یک یورز کنترل بنویسم شبیه این با قابلیت های بیشتر
اما اولین بارمه میخوام که یوزر کنترل بنویسم
و زیاد هم گرافیک توی سی شارپ بلد نیستم
کسی می تونه منو راهنمایی کنه ؟
به نظرتون از کجا و چگونه شروع کنم؟
Untitled.jpg
چرا از mschart خود دات نت استفاده نمیکنید؟
چون چارت خود مایکروسافت این قابلیت رو نداره که با رفتن موس روی یک نقطه مشخصات اون نقطه رو نشون بده
کسی نیس منو کمک کنه؟!!!
سلام
یه مقدار باید وقت بذارید ولی بعنوان یه راهنمایی مختصر: چارت از چندتا بخش تشکیل شده که باید مقدار و مکان اینها رو محاسبه و رسم کنید.
1- تایتل یا عنوان نمودار هست که بالای نمودار قرار میگیره که در عکس شما وجود نداره.
2- لیبل محور عمودی
3- اعداد یا مقادیر محور عمودی
4- خود محور عمودی
4- لیبل محور افقی
5- اعداد یا مقادیر محور افقی
6- خود محور افقی
7- نمودار
8- جدول یا گرید (همون مربع های زیر نمودار)
9- راهنمای نمودار (قسمت پایین نمودار شما هست که نوشته ـــــــــــ Graph1)
در اون کنترلی که میخواید رسم انجام بدید باید رویداد paintش رو انتخاب کنید. برای رسم هم از کلاس Graphics استفاده میشه. حالا در این رویداد یک آرگومان از نوع گرافیک وجود داره PaintEventArgs e
بخش عمده نمودار شما با خط یا همون متد DrawLine و اعداد و رشته ها هم با متد DrawString از کلاس Graphics رسم میشه. خب شما می تونید مثل زیر یک خط و یک نوشته در این رویداد رسم کنید:
Graphics _g=e.Graphics;
_g.DrawLine(new Pen(Color.Red), 50, 50, 50, 300);
_g.DrawString("label1", this.Font, Brushes.Black, 100, 100);
با این متدها و چند متد دیگه هر شی گرافیکی رو میشه رسم کرد اما قسمت اصلی کار محاسبات برای پیدا کردن مکان اعداد و رشته ها، شروع خط، پایان خط و ... هست. ضمناً محورها و اون جدول و خود نمودار شما با خط رسم میشه برای رسم خط هم به دو نقطه نیاز داریم. جدول باید با استفاده از دو حلقه for یکی برای خطوط افقی و یکی برای خطوط عمودی رسم بشه.
خیلی ممنون از راهنمایی تون
من برای ایجاد یوزر کنترل این نمودار این ها رو نوشتم
public Chart1()
{
InitializeComponent();
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.Paint += new PaintEventHandler(drawline);
Invalidate();
}
public enum xaxistype
{
date,
time,
number,
};
public void drawline(Object sender, PaintEventArgs _g)
{
Graphics g = _g.Graphics;
g.DrawLine(new Pen(color), 30, 190, 450,190);
}
private Color color = Color.Violet;
private xaxistype _xaxistype = xaxistype.number;
تا وقتی که کنترل روی فرم قرار میگیره اجزای اصلی نمودار باشن
فقط مساله اینجاس که چون من اعداد می دم برای سایز خطم با تغییر اندازه کنترلم ،سایز خط تغییر نمی کنه
و می دونم سایز خط و بقیه اجزایی که میخوام در اول ایجاد کنترل باشن رو پیش فرض باید مقدار بدم
اما با تغییر سایز کنترلم چطور اونارو تغییر سایز بدم ؟
این لینک رو ببین
http://www.forum.a00b.com/showthread...pid=100#pid100
برای تغییر اندازه خطوط، باید از طول و عرض کنترل مورد نظر کمک بگیرید مثلاً شما می دونید که خط عمودی شما از پایین کنترل 50 پیکسل بالاتره و از بالای کنترل 50 پیکسل پایینتر. خب اینجا نقطه ها مون به فرض میشه:
Point p1 = new Point(100, 50);
Point p2 = new Point(100, this.Height - 50);
من با استفاده از این کتاب که لینکشو گذاشتم یک یوزر کنترل برای رسم نمودار طراحی کردم
اما اموزش توی این کتاب به این صورته که یک ارایه از پوینت بهش میدی و اون در هنگام رسم اجزای نمودار
چیزهایی از قبیل خط های اطراف گرید و عنوان ها و اینا
نقاط رو هم رسم می کنه
یعنی اگه بخوام یک به ارایه ی نقاطم اضافه کنم و اون رسم بشه باید یکی از خصوصات نمودار رو هم تغییر بدم تا اون نقاط رو جدید رسم کنه
اما من می خوام در تیک تایمر برای نمودار نقطه اضافه کنم و اون فقط اون نقاط رو رسم کنه
نه اینکه کل نمودار رو رفرش کنه
سورسش رو هم گذاشتم
کسی می تونه کمکم کنه ایا ؟؟؟
https://www.google.com/url?sa=t&rct=...13943665,d.bGQ
chart.rar
کسی نیس راهنمایی کنه ؟؟؟؟؟؟؟
سلام
برو به این آدرس
https://barnamenevis.org/showthread.p...%D9%87-MSCHART
ممنون از کمکتون این رو دیدم ولی مشکل من تو نوشتن Dll
اره
و هم اینکه موقع رسم خطوط پرش داره