PDA

View Full Version : کنترل سفازشی رسم نمودار



m. hamide7
شنبه 03 بهمن 1394, 11:04 صبح
سلام دوستان
خسته نباشید
من میخوام یک یورز کنترل بنویسم شبیه این با قابلیت های بیشتر
اما اولین بارمه میخوام که یوزر کنترل بنویسم
و زیاد هم گرافیک توی سی شارپ بلد نیستم
کسی می تونه منو راهنمایی کنه ؟
به نظرتون از کجا و چگونه شروع کنم؟
138597

abdullah20
شنبه 03 بهمن 1394, 11:59 صبح
چرا از mschart خود دات نت استفاده نمیکنید؟

m. hamide7
دوشنبه 05 بهمن 1394, 12:20 عصر
چون چارت خود مایکروسافت این قابلیت رو نداره که با رفتن موس روی یک نقطه مشخصات اون نقطه رو نشون بده

m. hamide7
دوشنبه 05 بهمن 1394, 14:48 عصر
کسی نیس منو کمک کنه؟!!!

Mahmoud Zaad
دوشنبه 05 بهمن 1394, 15:31 عصر
سلام
یه مقدار باید وقت بذارید ولی بعنوان یه راهنمایی مختصر: چارت از چندتا بخش تشکیل شده که باید مقدار و مکان اینها رو محاسبه و رسم کنید.
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 یکی برای خطوط افقی و یکی برای خطوط عمودی رسم بشه.

m. hamide7
سه شنبه 06 بهمن 1394, 08:09 صبح
خیلی ممنون از راهنمایی تون

m. hamide7
سه شنبه 06 بهمن 1394, 14:12 عصر
من برای ایجاد یوزر کنترل این نمودار این ها رو نوشتم

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;

تا وقتی که کنترل روی فرم قرار میگیره اجزای اصلی نمودار باشن
فقط مساله اینجاس که چون من اعداد می دم برای سایز خطم با تغییر اندازه کنترلم ،سایز خط تغییر نمی کنه
و می دونم سایز خط و بقیه اجزایی که میخوام در اول ایجاد کنترل باشن رو پیش فرض باید مقدار بدم
اما با تغییر سایز کنترلم چطور اونارو تغییر سایز بدم ؟

amin8505
سه شنبه 06 بهمن 1394, 19:51 عصر
چون چارت خود مایکروسافت این قابلیت رو نداره که با رفتن موس روی یک نقطه مشخصات اون نقطه رو نشون بده

این لینک رو ببین
http://www.forum.a00b.com/showthread.php?tid=26&pid=100#pid100

Mahmoud Zaad
چهارشنبه 07 بهمن 1394, 16:26 عصر
برای تغییر اندازه خطوط، باید از طول و عرض کنترل مورد نظر کمک بگیرید مثلاً شما می دونید که خط عمودی شما از پایین کنترل 50 پیکسل بالاتره و از بالای کنترل 50 پیکسل پایینتر. خب اینجا نقطه ها مون به فرض میشه:

Point p1 = new Point(100, 50);
Point p2 = new Point(100, this.Height - 50);

m. hamide7
چهارشنبه 21 بهمن 1394, 12:15 عصر
من با استفاده از این کتاب که لینکشو گذاشتم یک یوزر کنترل برای رسم نمودار طراحی کردم
اما اموزش توی این کتاب به این صورته که یک ارایه از پوینت بهش میدی و اون در هنگام رسم اجزای نمودار
چیزهایی از قبیل خط های اطراف گرید و عنوان ها و اینا
نقاط رو هم رسم می کنه
یعنی اگه بخوام یک به ارایه ی نقاطم اضافه کنم و اون رسم بشه باید یکی از خصوصات نمودار رو هم تغییر بدم تا اون نقاط رو جدید رسم کنه
اما من می خوام در تیک تایمر برای نمودار نقطه اضافه کنم و اون فقط اون نقاط رو رسم کنه
نه اینکه کل نمودار رو رفرش کنه
سورسش رو هم گذاشتم
کسی می تونه کمکم کنه ایا ؟؟؟
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjz18O36-zKAhWkj3IKHXfbBvsQFggcMAA&url=http%3A%2F%2Fengold.ui.ac.ir%2F~rasti%2FCourse s%2Fprogramming%2FPractical%2520CSharp%2520-%2520Charts%2520and%2520Graphics.pdf&usg=AFQjCNHMvrMmwQGFLtUfKWJPNNsV8TUt8Q&bvm=bv.113943665,d.bGQ



138957

m. hamide7
شنبه 24 بهمن 1394, 02:11 صبح
کسی نیس راهنمایی کنه ؟؟؟؟؟؟؟

alexmcse
یک شنبه 25 بهمن 1394, 17:38 عصر
کسی نیس راهنمایی کنه ؟؟؟؟؟؟؟

سلام
برو به این آدرس

http://barnamenevis.org/showthread.php?272474-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B1%D8%B3%D9%85-%D9%86%D9%85%D9%88%D8%AF%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%A8%D9%87-%D9%88%D8%B3%DB%8C%D9%84%D9%87-MSCHART

:تشویق:

m. hamide7
دوشنبه 26 بهمن 1394, 02:10 صبح
ممنون از کمکتون این رو دیدم ولی مشکل من تو نوشتن Dll

khokhan
شنبه 01 اسفند 1394, 05:37 صبح
یه نفر پیدا نمی شه به من کمک کنه
مشکل شما اینه که با رفتن موس روی یک نقطه مشخصات اون نقطه رو نشون بده ؟؟؟؟؟

m. hamide7
یک شنبه 02 اسفند 1394, 03:52 صبح
اره
و هم اینکه موقع رسم خطوط پرش داره

khokhan
یک شنبه 02 اسفند 1394, 12:51 عصر
اره
و هم اینکه موقع رسم خطوط پرش داره

................................................. با حرکت دادن ماوس در محدوده چارت طول و عرض رو هم در تول تیب به همراه نشانگر ماوس نشون می ده و هم در لیبل ها