اخوتي أعزاء في منتدى فيجول بيسك المحترم
طلب مني كمشروع في بيئة سي شارب رسم هندسي يظهر في لفورم
يكون الرسم على شكل بيت مؤلف من دوائر ومربعات وخطوط. واذا لم يكن بالاستطاع رسم، ارجو ارشادي على الاكواد
ارجو الاطلاع على الرسم التوضيحي في الأسفل
[img=12x12][/img]
11-11-16, 06:42 PM (آخر تعديل لهذه المشاركة : 11-11-16, 06:50 PM {2} بواسطة ممدوح.)
الرسم في بيئة سي شارب (في بيئة الدوت نت عموماً) موضوع كبير جداً
وما سأذكره هنا سوى جزء بسيط جداُ يصلح عادة للمبتدئين
--------------------------------------
يحتاج الرسم في الدوت نت بشكل أساسي لأمرين:
الأول Bitmap وهي مساحة في الذاكرة تعادل المساحة المطلوبة للرسم فيها وتحدد بالعرض Width والارتفاع Height
الثاني Graphics وهي لوحة الرسم وهي تحتوي على أدوات الرسم من ألوان وأقلام وفرش وأوامر رسم وتعبئة وإلخ
كود :
Bitmap bmp = new Bitmap(500, 500);
Graphics g = Graphics.FromImage(bmp);
تحتاج لتحديد إحداثيات نقطة ما Point من أجل الرسم وتتطلب قيمتين x,y مثل
وهذا أبسط مثال
كود :
Point pnt = new Point(200, 100)
ويجب معرفة الحجم Size والذي يتطلب العرض Width والارتفاع Height
وهذا أبسط مثال
كود :
Size sz = new Size(500, 500);
المستطيل Rectangle ويتطلب تحديد الموقع بالنقطة Point والمساحة بالحجم Size
وهذا أبسط مثال
كود :
Rectangle rect = new Rectangle( new Point(0,0), new Size(200,200));
-------------------------------------
أوامر الرسم
من أوامر الرسم ما يشترط القلم Pen والتي تكون عادة لرسم الأشكال الخطية المفرغة
ومنها ما يشترط SolidBursh وعادة ذلك لتعبئة الأشكال المغلقة
أمر الرسم للأشكال المفرغة يبدأ بكلمة Draw وأمر الرسم للأشكال الممتلئة يبدأ بكلمة Fill
-------------------------------------------
أمر رسم الأشكال المفرغة يبدأ بكلمة Draw
رسم الخط DrawLine وتحتاج لقلم Pen ونقطتين Point
وهذا أبسط مثال
كود :
g.DrawLine(new Pen(Color.Green), new Point(0, 100), new Point(200, 100));
رسم الخطوط DrawLines تعتمد على مجموعة إحداثيان Point
وهذا أبسط مثال
كود :
Point[] pnts = { new Point(0, 100), new Point(100, 0), new Point(200, 100), new Point(0, 100) };
g.DrawLines(new Pen(Color.Green), pnts);
رسم المضلع DrawPolygon وهي تشبه الخطوط Lines ولكنه شكل مغلق أي أنه سيقوم من تلقائياً بوصل آخر نقطة بأول نقطة
وهذا أبسط مثال
كود :
Point[] pnts = { new Point(0, 100), new Point(100, 0), new Point(200, 100) };
g.DrawPolygon(new Pen(Color.Blue), pnts);
رسم المستطيل DrawRectangle ويطلب تحديد المستطيل Rectangle المشروح سابقاً
وهذا أبسط مثال
كود :
Rectangle rect = new Rectangle( new Point(10,10), new Size(100,100));
g.DrawRectangle(new Pen(Color.Green), rect);
رسم الشكل البيضاوي DrawEllipse يطلب مثل المستطيل Rectangle لتحديد المساحة المراد الرسم فيها
وكما تم شرحه سابقا بإن Rectangle يطلب الحجم Size فلو وضعنا العرض Widh واللارتفاع Height بقيم متساوية سيكون الشكل دائرة تماماً
وهذا أبسط مثال
كود :
Rectangle rect = new Rectangle( new Point(10,10), new Size(100,100));
g.DrawEllipse(new Pen(Color.Red), rect);
-------------------------------------------
أمر رسم الأشكال الممتلئة يبدأ بكلمة Fill
وهي تشبه السابق بخلاف أنها تحتاج للفرشاة SolidBrush
-------------------------------------------
ولا يسع الوقت لشرح الباقي
----------------------------------------------
كود :
private void button1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(500, 500);
Graphics g = Graphics.FromImage(bmp);
{ // رسم المثلث
Point[] pnts = { new Point(0, 50), new Point(50, 0), new Point(100, 50), new Point(0, 50) };
g.DrawLines(new Pen(Color.Green), pnts);
}
{ // رسم الدائرة
Rectangle rect = new Rectangle(new Point(40, 20), new Size(20, 20));
g.DrawEllipse(new Pen(Color.Red), rect);
}
{ // رسم مربع المنزل
Rectangle rect = new Rectangle(new Point(0, 50), new Size(100, 100));
g.DrawRectangle(new Pen(Color.Blue), rect);
}
{ // رسم الباب
Rectangle rect = new Rectangle(new Point(30, 100), new Size(20, 50));
g.DrawRectangle(new Pen(Color.Green), rect);
}
{ // رسم النافذة
Rectangle rect = new Rectangle(new Point(60, 100), new Size(20, 20));
g.DrawRectangle(new Pen(Color.Blue), rect);
// رسم عامودا النافذة
g.DrawLine(new Pen(Color.Green), new Point(60, 110), new Point(80, 110));
g.DrawLine(new Pen(Color.Red), new Point(70, 100), new Point(70, 120));
}
// وضع الرسمة في أداة مربع صورة
this.pictureBox1.Image = bmp;
}
(11-11-16, 06:42 PM)ممدوح كتب : الرسم في بيئة سي شارب (في بيئة الدوت نت عموماً) موضوع كبير جداً
وما سأذكره هنا سوى جزء بسيط جداُ يصلح عادة للمبتدئين
--------------------------------------
يحتاج الرسم في الدوت نت بشكل أساسي لأمرين:
الأول Bitmap وهي مساحة في الذاكرة تعادل المساحة المطلوبة للرسم فيها وتحدد بالعرض Width والارتفاع Height
الثاني Graphics وهي لوحة الرسم وهي تحتوي على أدوات الرسم من ألوان وأقلام وفرش وأوامر رسم وتعبئة وإلخ
كود :
Bitmap bmp = new Bitmap(500, 500);
Graphics g = Graphics.FromImage(bmp);
تحتاج لتحديد إحداثيات نقطة ما Point من أجل الرسم وتتطلب قيمتين x,y مثل
وهذا أبسط مثال
كود :
Point pnt = new Point(200, 100)
ويجب معرفة الحجم Size والذي يتطلب العرض Width والارتفاع Height
وهذا أبسط مثال
كود :
Size sz = new Size(500, 500);
المستطيل Rectangle ويتطلب تحديد الموقع بالنقطة Point والمساحة بالحجم Size
وهذا أبسط مثال
كود :
Rectangle rect = new Rectangle( new Point(0,0), new Size(200,200));
-------------------------------------
أوامر الرسم
من أوامر الرسم ما يشترط القلم Pen والتي تكون عادة لرسم الأشكال الخطية المفرغة
ومنها ما يشترط SolidBursh وعادة ذلك لتعبئة الأشكال المغلقة
أمر الرسم للأشكال المفرغة يبدأ بكلمة Draw وأمر الرسم للأشكال الممتلئة يبدأ بكلمة Fill
-------------------------------------------
أمر رسم الأشكال المفرغة يبدأ بكلمة Draw
رسم الخط DrawLine وتحتاج لقلم Pen ونقطتين Point
وهذا أبسط مثال
كود :
g.DrawLine(new Pen(Color.Green), new Point(0, 100), new Point(200, 100));
رسم الخطوط DrawLines تعتمد على مجموعة إحداثيان Point
وهذا أبسط مثال
كود :
Point[] pnts = { new Point(0, 100), new Point(100, 0), new Point(200, 100), new Point(0, 100) };
g.DrawLines(new Pen(Color.Green), pnts);
رسم المضلع DrawPolygon وهي تشبه الخطوط Lines ولكنه شكل مغلق أي أنه سيقوم من تلقائياً بوصل آخر نقطة بأول نقطة
وهذا أبسط مثال
كود :
Point[] pnts = { new Point(0, 100), new Point(100, 0), new Point(200, 100) };
g.DrawPolygon(new Pen(Color.Blue), pnts);
رسم المستطيل DrawRectangle ويطلب تحديد المستطيل Rectangle المشروح سابقاً
وهذا أبسط مثال
كود :
Rectangle rect = new Rectangle( new Point(10,10), new Size(100,100));
g.DrawRectangle(new Pen(Color.Green), rect);
رسم الشكل البيضاوي DrawEllipse يطلب مثل المستطيل Rectangle لتحديد المساحة المراد الرسم فيها
وكما تم شرحه سابقا بإن Rectangle يطلب الحجم Size فلو وضعنا العرض Widh واللارتفاع Height بقيم متساوية سيكون الشكل دائرة تماماً
وهذا أبسط مثال
كود :
Rectangle rect = new Rectangle( new Point(10,10), new Size(100,100));
g.DrawEllipse(new Pen(Color.Red), rect);
-------------------------------------------
أمر رسم الأشكال الممتلئة يبدأ بكلمة Fill
وهي تشبه السابق بخلاف أنها تحتاج للفرشاة SolidBrush
-------------------------------------------
ولا يسع الوقت لشرح الباقي
----------------------------------------------
كود :
private void button1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(500, 500);
Graphics g = Graphics.FromImage(bmp);
{ // رسم المثلث
Point[] pnts = { new Point(0, 50), new Point(50, 0), new Point(100, 50), new Point(0, 50) };
g.DrawLines(new Pen(Color.Green), pnts);
}
{ // رسم الدائرة
Rectangle rect = new Rectangle(new Point(40, 20), new Size(20, 20));
g.DrawEllipse(new Pen(Color.Red), rect);
}
{ // رسم مربع المنزل
Rectangle rect = new Rectangle(new Point(0, 50), new Size(100, 100));
g.DrawRectangle(new Pen(Color.Blue), rect);
}
{ // رسم الباب
Rectangle rect = new Rectangle(new Point(30, 100), new Size(20, 50));
g.DrawRectangle(new Pen(Color.Green), rect);
}
{ // رسم النافذة
Rectangle rect = new Rectangle(new Point(60, 100), new Size(20, 20));
g.DrawRectangle(new Pen(Color.Blue), rect);
// رسم عامودا النافذة
g.DrawLine(new Pen(Color.Green), new Point(60, 110), new Point(80, 110));
g.DrawLine(new Pen(Color.Red), new Point(70, 100), new Point(70, 120));
}
// وضع الرسمة في أداة مربع صورة
this.pictureBox1.Image = bmp;
}
شكرا اخي ممدوح
هذا ما كنت اطلبه بالضبط
لقد نفذته واعطاني ما اريد
وهناك استفسار عن مدى فاعلية هذه الاوامر
هل بامكاني ان ارسم اشكال هندسية اكثر تعقديا واكثر جمالية مثلا ارسم سيارة
(11-11-16, 06:42 PM)ممدوح كتب : الرسم في بيئة سي شارب (في بيئة الدوت نت عموماً) موضوع كبير جداً
وما سأذكره هنا سوى جزء بسيط جداُ يصلح عادة للمبتدئين
--------------------------------------
يحتاج الرسم في الدوت نت بشكل أساسي لأمرين:
الأول Bitmap وهي مساحة في الذاكرة تعادل المساحة المطلوبة للرسم فيها وتحدد بالعرض Width والارتفاع Height
الثاني Graphics وهي لوحة الرسم وهي تحتوي على أدوات الرسم من ألوان وأقلام وفرش وأوامر رسم وتعبئة وإلخ
كود :
Bitmap bmp = new Bitmap(500, 500);
Graphics g = Graphics.FromImage(bmp);
تحتاج لتحديد إحداثيات نقطة ما Point من أجل الرسم وتتطلب قيمتين x,y مثل
وهذا أبسط مثال
كود :
Point pnt = new Point(200, 100)
ويجب معرفة الحجم Size والذي يتطلب العرض Width والارتفاع Height
وهذا أبسط مثال
كود :
Size sz = new Size(500, 500);
المستطيل Rectangle ويتطلب تحديد الموقع بالنقطة Point والمساحة بالحجم Size
وهذا أبسط مثال
كود :
Rectangle rect = new Rectangle( new Point(0,0), new Size(200,200));
-------------------------------------
أوامر الرسم
من أوامر الرسم ما يشترط القلم Pen والتي تكون عادة لرسم الأشكال الخطية المفرغة
ومنها ما يشترط SolidBursh وعادة ذلك لتعبئة الأشكال المغلقة
أمر الرسم للأشكال المفرغة يبدأ بكلمة Draw وأمر الرسم للأشكال الممتلئة يبدأ بكلمة Fill
-------------------------------------------
أمر رسم الأشكال المفرغة يبدأ بكلمة Draw
رسم الخط DrawLine وتحتاج لقلم Pen ونقطتين Point
وهذا أبسط مثال
كود :
g.DrawLine(new Pen(Color.Green), new Point(0, 100), new Point(200, 100));
رسم الخطوط DrawLines تعتمد على مجموعة إحداثيان Point
وهذا أبسط مثال
كود :
Point[] pnts = { new Point(0, 100), new Point(100, 0), new Point(200, 100), new Point(0, 100) };
g.DrawLines(new Pen(Color.Green), pnts);
رسم المضلع DrawPolygon وهي تشبه الخطوط Lines ولكنه شكل مغلق أي أنه سيقوم من تلقائياً بوصل آخر نقطة بأول نقطة
وهذا أبسط مثال
كود :
Point[] pnts = { new Point(0, 100), new Point(100, 0), new Point(200, 100) };
g.DrawPolygon(new Pen(Color.Blue), pnts);
رسم المستطيل DrawRectangle ويطلب تحديد المستطيل Rectangle المشروح سابقاً
وهذا أبسط مثال
كود :
Rectangle rect = new Rectangle( new Point(10,10), new Size(100,100));
g.DrawRectangle(new Pen(Color.Green), rect);
رسم الشكل البيضاوي DrawEllipse يطلب مثل المستطيل Rectangle لتحديد المساحة المراد الرسم فيها
وكما تم شرحه سابقا بإن Rectangle يطلب الحجم Size فلو وضعنا العرض Widh واللارتفاع Height بقيم متساوية سيكون الشكل دائرة تماماً
وهذا أبسط مثال
كود :
Rectangle rect = new Rectangle( new Point(10,10), new Size(100,100));
g.DrawEllipse(new Pen(Color.Red), rect);
-------------------------------------------
أمر رسم الأشكال الممتلئة يبدأ بكلمة Fill
وهي تشبه السابق بخلاف أنها تحتاج للفرشاة SolidBrush
-------------------------------------------
ولا يسع الوقت لشرح الباقي
----------------------------------------------
كود :
private void button1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(500, 500);
Graphics g = Graphics.FromImage(bmp);
{ // رسم المثلث
Point[] pnts = { new Point(0, 50), new Point(50, 0), new Point(100, 50), new Point(0, 50) };
g.DrawLines(new Pen(Color.Green), pnts);
}
{ // رسم الدائرة
Rectangle rect = new Rectangle(new Point(40, 20), new Size(20, 20));
g.DrawEllipse(new Pen(Color.Red), rect);
}
{ // رسم مربع المنزل
Rectangle rect = new Rectangle(new Point(0, 50), new Size(100, 100));
g.DrawRectangle(new Pen(Color.Blue), rect);
}
{ // رسم الباب
Rectangle rect = new Rectangle(new Point(30, 100), new Size(20, 50));
g.DrawRectangle(new Pen(Color.Green), rect);
}
{ // رسم النافذة
Rectangle rect = new Rectangle(new Point(60, 100), new Size(20, 20));
g.DrawRectangle(new Pen(Color.Blue), rect);
// رسم عامودا النافذة
g.DrawLine(new Pen(Color.Green), new Point(60, 110), new Point(80, 110));
g.DrawLine(new Pen(Color.Red), new Point(70, 100), new Point(70, 120));
}
// وضع الرسمة في أداة مربع صورة
this.pictureBox1.Image = bmp;
}