مشکل کشیدن مربع در سی شارپ
دوستان سلام یک قسمت از نرم افزار جدیدی که دارم می نویسم مربوط به قسمت رسم اشکال هست. مشکل اینه که وقتی مربع رو می کشم بعد از کشیدن مربع دوم مربع قبلی پاک مشود و نمی توان چند مربع ترسیم کرد لطفا کمک کنید شدیدا محتاج حل این مشکل هستم
1 پاسخ
سلام، وقت بخیر
بنده به طور کلی راهکار رو خدمتون میگم شما بر اساس برنامتون پیاده سازی کنید. الان شما تنها بر اساس مختصات مشخص شده توسط کاربر بوسیله Mouse شکل مورد نظرتون رو رسم می کنید. طبیعی هست که با رسم یک شکل جدید شکل قدیمی پاک باشه. برای حل این مشکل شما باید برای هر شکلی که رسم می کنید یک کلاس تعریف کنید و لیستی ایجاد کنید از اشیاء ای که توسط کاربر کشیده شده و بعد بر اساس اشیاء داخل لیست عملیات رسم رو انجام بدید:
تعریف یک کلاس پایه:
public class Shape { public int DrawPriority { get; set; } public virtual void Draw(Graphics g) { } }
بر اساس هر Shape ای که قراره رسم بشه یک کلاس زیر مجموعه ایجاد کنید:
public class Rectangle { public Point StartPoint { get; set; } public Size Size { get; set; } public override void Draw(Graphics g) { g.DrawRectangle(new Pen(Color.Black), new System.Drawing.Rectangle(StartPoint,Size)); } }
تو فرمی که قراره عملیات رسم انجام بشه یک لیست از Shape ایجاد کنید:
private List<Shape> shapes = new List<Shape>();
و در نهایت تو عملیات رسم رو بر اساس لیست تعریف شده انجام بدید، فرض کنیم که داخل یک Panel رسم رو انجام می دید:
private void panel1_Paint(object sender, PaintEventArgs e) { foreach (var shape in shapes) { shape.Draw(e.Graphics); } }