PDA

View Full Version : سوال: چگونگی ترسیم شکل به صورت پویا و با توجه به داده های ورودی کاربر



armeshi
شنبه 29 فروردین 1394, 22:46 عصر
سلام دوستان
اولا بنده رو راهنمایی کنین تا عنوان تایپیک سوالم رو چی بذارم
سوالم در این مورده که فرض کنین یه شکل مربع (ستون ساختمان )دارم و توش می خوام چند تا دایره قرمز رنگ ( به عنوان میلگرد ) به تعداد موردنیاز کاربر بذارم که همون لجظه که کاربر میلگرد ستونها رو کم یا زیاد میکنه در اون شکل هم بلافاصله تغییرات اعمال بشه، یا وقتی اندازه ستون رو مثلا 40 سانتیمتر وارد میکنه اندازه ستون به صورت شماتیک 40 بشه ( یه جورایی میخام که شکلم با توجه به نیاز کاربر تغییر کنه یعنی داینامیک بشه ) مانند شکل زیر:
130423
ممنون

rasol_afkham
شنبه 29 فروردین 1394, 23:36 عصر
سوالت رو بزار - تغییر تعداد و خواص کنترلها در زمان اجرا
شما می تونی از کنترل لیبل و یا هر کنترل دیگری به جای دایره های قرمز اسفاده کنی و دایره قرمز رو بر روی کنترل رسم کنی و یا به صورت عکس در پس زمینه اون قرار بدی. حالا نیاز به محاسبه داری.
اول: محاسبه ابعاد ستون
دوم: محاسبه محل قرار گیری میلگردها.
وقتی که ابعاد ستون تغییر می کنه باید خصوصیات کنترلی که به عنوان ستون قرار دادی بسته به اون اندازه تغییر کنه
برای تغییر تعداد میلگردها هم می تونی از یک آرایه استفاده کنی تا بتوان در زمان اجرای برنامه تعداد اون رو زیاد یا کم کنی. البته این رو هم بدون که آرایه تنها می تونه از انتهای اون کم و زیاد بشه. اگر نیاز باشه که برای مثال میلگردی که در ابتدا ایجاد شده و در ابتدای آرایه قرار داره و کاربر اون رو می خواد حذف کنه باید از مجموعه ها استفاده کنی. با استفاده از یک مجموعه به را حتی می تونی هر عضوی را به هر مکانی از مجموعه اضافه و یا از اون حذف کنی.

Mahmoud Zaad
یک شنبه 30 فروردین 1394, 09:27 صبح
سلام
این یه تصویر هست که با استفاده از توابع گرافیکی رسم میشه. DrawEllipse و DrawRectangle و DrawLine و DrawString البته یه سری محاسبات ریاضی برای پیدا کردن Location خطوط و دوایر و مستطیل (مربع) ها و احتمالاً رشته ها. یه برنامه ساده گرافیکی که از توابع بالا استفاده کرده رو پیدا کنید، ببینید چه کار کرده. کار سختی نیست.

armeshi
یک شنبه 30 فروردین 1394, 11:17 صبح
با تشکر از دوستان عزیز
نمیشه یه مثال واقعی بزنید
اینو تو مرحله اول می تونین بگین و فایلشو بذارین که مثلا یه شکل مربع یا مستطیل باشه و با مقدار اندازه ورودی کاربر اندازه اونم تغییر کنه؟
آخه من خودم برنامه نویس در حد بسیار مبتدی هستم.
راستی از دوستی که عنوان تایپیک رو عوض کرده ممنونم.

Mahmoud Zaad
یک شنبه 30 فروردین 1394, 14:27 عصر
این یه مثال که همه موارد رو انجام میده، یه pictureBox روی فرم قرار بدید با دو تا تکست باکس (txtWidth و txtHeight که طول و عرض مستطیل رو وارد می کنید) و یه دکمه. برای رویداد کلیک دکمه کد زیر رو بنویسید:

Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
using (Graphics gr = Graphics.FromImage(bmp))
{
gr.DrawRectangle(Pens.Red, new Rectangle(0, 0, Convert.ToInt32(txtWidth.Text), Convert.ToInt32(txtHeight.Text)));
gr.DrawLine(Pens.Blue, new Point(0, 0), new Point(100, 100));
gr.DrawEllipse(Pens.Green, new Rectangle(0, 0, Convert.ToInt32(txtWidth.Text), Convert.ToInt32(txtHeight.Text)));
gr.DrawString("My Text", new Font("tahoma", 10, FontStyle.Regular), Brushes.Orange, new PointF(80, 80));
pictureBox1.Invalidate();
}
pictureBox1.Image=bmp;

ضمناً برای رسم دایره تابع DrawEllipse هست که توی پست قبلی اشتباه نوشته بودم. تمام عددهایی که توی کد نوشتم رو می تونید براش تکست باکس (یا هر کنترل ورودی دیگه ای) روی فرم قرار بدید و مقدارش رو از کاربر بگیرید. یه مساله دیگه، توی شکل شما اون حالت جدول (چهار خونه یا هر اسمی) بوسیله خط ها ایجاد میشن. که مثلاً هر 5 تا خط در میون میتونید رنگ خط و ضخامتش رو عوض کنید.

armeshi
یک شنبه 30 فروردین 1394, 23:33 عصر
با تشکر از همه
اقای Mahmoud Zaad (http://barnamenevis.org/member.php?199295-Mahmoud-Zaad) و دوستان
با تشکر از راهنماییتون
حالا وقتی اندازه کوچکتری میدم مشکلی تو نمایش پیش نمیاد ولی اندازه که بزرگتر میشه بخشی از شکل دیده نمیشه؟( کمبود جا دارم. تو عکس اولی چارچوب خطوط شطرنجی ثابته این مربع با رنگ مشکیه که کوچیک و بزرگ میشه. تو این مثالتونم نمیشه اینکارو کرد) یعنی یه چارچوبه ثابت داشته باشم و شکل مربع داخل اون رسم بشه و تغییر سایز بده
130456

Mahmoud Zaad
دوشنبه 31 فروردین 1394, 09:21 صبح
خب الان picturebox شما کوچکتر از سایز ورودی هست. یا اینکه باید خاصیت sizeMode این picturebox رو روی zoom قرار بدید. یا به طریقی scrollش رو فعال کنید. این فقط یه مثال ساده بود شما باید با توجه به کارتون محاسبات رو انجام بدید و خط ها و مربع ها و ... رو رسم کنید.

armeshi
سه شنبه 01 اردیبهشت 1394, 00:01 صبح
سلام
لطفا به فیلم و تصاویر توجه بفرمایین
من دقیقا چنین موردی رو میخام داشته باشم:


http://up.facenama.com/file/64997/1429560913401162_3gp.3gp.html

130494

130495

130496

Mahmoud Zaad
سه شنبه 01 اردیبهشت 1394, 09:47 صبح
ببینید این پروژه قطعاً بحثها و بخش های گرافیکی دیگه ای هم داره، من الان اینو جواب بدم، شما به اصول کار گرافیک مسلط نمی شید و همیشه وابسته می مونید در صورتیکه باور کنید این کار خیلی ساده هست. رسم مستطیلش رو که تو اون چند خط گفتم، می مونه رسم 6 تا دایره کنار هر ضلع مستطیل. که اینها رو هم یه محاسبه انجام بدید مکانش بدست میاد. بعد هم با همون متدی که تو کدها هست رسمش کنید.