PDA

View Full Version : مبتدی: رسم سلول در یک مستطیل با استفاده از GDI+



CodeforLife
سه شنبه 31 فروردین 1395, 07:49 صبح
سلام من یه مستطیل به اندازه کل فرم رسم کردم و می خوام با استفاده از متد Draw Lines به صورت سلولی یا چهارخونه در فرم رسم کنم ؟
میشه راهنماییم کنید

vb8334
سه شنبه 31 فروردین 1395, 09:10 صبح
سلام دوست عزیز






private void Form1_Paint(object sender, PaintEventArgs e)
{


Pen redpen = new Pen(Color.Red, 3);
Pen greenpen = new Pen(Color.Green, 3);


int numOfCells = 50;
int cellSize = 30;
Graphics g = this.CreateGraphics();


for (int i = 0; i < numOfCells; i++)
{
// Vertical
g.DrawLine(redpen, i * cellSize, 0, i * cellSize, numOfCells * cellSize);
// Horizontal
g.DrawLine(greenpen, 0, i * cellSize, numOfCells * cellSize, i * cellSize);
}


redpen.Dispose();
greenpen.Dispose();


}

CodeforLife
چهارشنبه 01 اردیبهشت 1395, 01:31 صبح
سلام وسپاسگزارم از شما
اگر بخوام همه این خط ها رو به صورت ماپیچ یا میز در بیارم ...
باید چه کار کنم؟

vb8334
چهارشنبه 01 اردیبهشت 1395, 03:15 صبح
متوجه منظورتون نشدم ، ماپیچ یا میز؟

CodeforLife
چهارشنبه 01 اردیبهشت 1395, 06:00 صبح
منظورم بازی ماز بود ؟
یه سوال دیگه هم دارم برای پاک کردن خط رسم شده در GDI+ باید چی بنویسم؟

vb8334
چهارشنبه 01 اردیبهشت 1395, 09:22 صبح
آها (لاتین مینوشتی maze بهتر بود )

در مورد سوال اول شما :

در مورد اینکه چطور میشه اون دیوارهای بازی maze رو ساخت با +gdi، حقیقتش من این بازی رو ننوشتم اما در این مورد 2 تا نکته به ذهنم میرسه

1-اگر بخوای اون خطوط رو با +gdi ترسیم کنی بنظرم باید یه الگو داشته باشی منظورم اینه که برای رسم این خطوط پیچ در پیچ باید از یه قانون استفاده کنی که متآسفانه من اون رو نمیدونم

یعنی در واقع منظورم اینه که نمیتونی بگی خط 1 تو این موقعیت باشه و بعد بیای بگی خط 2 تو موقعیت دیگه باشه اینجوری خیلی درد سر داره و کلآ نشدنی هستش.

2- میتونی از +gdi استفاده نکنی و بیای با لیبل اون دیوارها رو بسازی دستی یعنی مکررآ (copy & paste) کنی و اون ساختاری که میخواهی رو درست کنی.

توجه : این نظرات من بود چیزی که به ذهنم رسید ولی شاید دوستان دیگه بیان و نظرات بهتری داشته باشن.

در مورد سوال دوم شما :

در واقع شما خطی که رسم میکنی رو نمیتونی delete کنی ، در واقع باید کل گراف رو (redraw) کنی.

اون کدها رو بجای رخداد paint بزار تو shown ، بعدش تو یه باتن میتونی این رو بنویسی (برای پاک کردن کل خطوط) .



private void button1_Click(object sender, EventArgs e)
{
Graphics g = CreateGraphics();
g.Clear(this.BackColor);
}