بسم الله الرحمن الرحيم
مع قله المشاركات حتي الأن بهذا الموضوع , لكن أرجو أن يكون هذا الإطار مفيد للجميع
وأرجو أن تكون حجرة البي أتش بي أصبحت الأن تأخذ نسق منظم إلي حدما
دعنا الأن نقوم بدهان تلك الحجرة من خلال المجموعة System.Drawing
المجموعة System.Drawing
توفر لنا هذه المجموعة القيام بمهام الرسم والتلوين
ومن خلال هذه المجموعة سوف نقوم ببناء Chart Control وذلك لاحقا عندما نتحدث عن المجموعة System.Web.UI.WebControls
ملاحظة : لإستخدام هذه المجموعة يجب أن تضمن الملف php_gd2.dll إلي فهرس ال php extension ثم تقوم بتعديل السطر التالي بملف php.ini
;extension=php_gd2.dll
إلي
extension=php_gd2.dll
تضم هذه المجموعة فئات عديدة وهي كما يلي
+ Point Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تتميز هذه الفئه بعنصرين x و y من خلالهم يمكننا تحديد موقع نقطه علي مسطح معين
+ Size Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تتميز هذه الفئه بعنصرين width و height من خلالهم يمكننا تحديد أبعاد مجسم ثنائي الأبعاد مثل المستطيل
+ Rectangle Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تعبر الفئة عن مستطيل ( ويتميز المستطيل بنقطة البدايه location ويكون موضعها من أعلي اليسار , وأبعاد المستطيل Size )
+ Font Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تعبر هذه الفئة عن الفنتات Fonts من خلال تحديد اسم الفونت FontName ( او مسار الفونت ) وحجم الفونت FontSize
- تستخدم عند إجراء رسم للنصوص
+ Color Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تعبر هذه الفئة عن لون معين من خلال تحديد قيم لدرجات اللون الأحمر والأزرق والأخضر
- تستخدم في تلوين وتعبئة الأشكال
+ Pen Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تعبر هذه الفئة عن قلم رسم يتميز هذا القلم بسمك سن القلم المستخدم للرسم width , ولون حبر القلم المستخدم في التلوين Color
- يستخدم القلم لإجراء عملية رسم الأشكال Drawing وليس للتعبه الأشكال Filling
+ Graphics Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تحتوي هذه الفئة علي الدوال الخاصة برسم وتعبئة الأشكال الهندسية
+ Bitmap Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- يستخدم هذه الفئة كوعاء يتم الرسم عليه باستخدام فئة ال Graphics
ويوضح الشكل التالي تركيب المجموعة System.Drawing
(لاحظ أن الأعضاء أمثال الدوال والثوابت والمتغيرات التي تحتها خط تعبر عن أعضاء إستاتيكية Static members
والأعضاء المائلة italic هي أعضاء مجردة abstract
وأيضا لم أقم بإدراج الأعضاء التي أري أنها يجب أن تكون ذات مستوي رؤية internal أو Friend )

لاحظ أن المجلد System.Drawing يحتوي علي التالي
- الملف Bitmap.php يحتوي علي الفئة Bitmap
- الملف Color.php يحتوي علي الفئة Color
- الملف Font.php يحتوي علي الفئة Font
- الملف Graphics.php يحتوي علي الفئة Graphics
- الملف Pen.php يحتوي علي الفئة Pen
- الملف Point.php يحتوي علي الفئة Point
- الملف Rectangle.php يحتوي علي الفئة Rectangle
- الملف Size.php يحتوي علي الفئة Size
كيف يمكننا إستخدام هذه الفئات :
سوف ندرج في مجلد ال bin مجموعة ال System.Drawing كما يلي

يمكننا إستخدام تلك الفئات من خلال عمل تضمين including لمحتويات الملف التالي
WebApplication5/bin/System.Drawing.php
وهذا هو محتوي الملف
<? include_once "System.php"; include_once "System.Collections.php"; include_once "System.Drawing/Point.php"; include_once "System.Drawing/Size.php"; include_once "System.Drawing/Rectangle.php"; include_once "System.Drawing/Font.php"; include_once "System.Drawing/Color.php"; include_once "System.Drawing/Pen.php"; include_once "System.Drawing/Graphics.php"; include_once "System.Drawing/Bitmap.php"; ?>
مثال
<script language="php">
include_once "../bin/System.Drawing.php";
$bitmap = new Bitmap(new Color(255,255,0), 300, 350 );
$dc = $bitmap->CreateGraphics();
$rect1 = new Rectangle( new Point(40,100), new Size(130,70) );
$rect2 = new Rectangle( new Point(120,70), new Size(130,70) );
$rect3 = $rect1->Union($rect2);
$dc->FillRectangle(new Color(255,0,0), $rect3);
$bitmap->SaveAs("images/test0.jpg");
</script>
<img src="images/test0.jpg">ويكون الناتج كما يلي

مثال أخر
<script language="php">
include_once "../bin/System.Drawing.php";
$bitmap = new Bitmap(new Color(255,255,0), 300, 400 );
$bitmap->SetPixel(110, 50, new Color(255,0,0) );
$bitmap->SetPixel(115, 50, new Color(255,0,0) );
$bitmap->SetPixel(120, 50, new Color(255,0,0) );
echo "<pre>";
print_r( $bitmap->GetPixel(120, 50) );
print_r( $bitmap->GetPixel(121, 120) );
echo "</pre>";
$dc = $bitmap->CreateGraphics();
$font = new Font("fonts/trado.ttf",14);
$dc->DrawString("ArabTeam GDI+", $font, new Color(0,0,255), new Point(10, 40) );
$rect1 = new Rectangle( new Point(40,100), new Size(130,70) );
$dc->FillRectangle(new Color(0,255,0), $rect1);
$rect2 = new Rectangle( new Point(120,70), new Size(130,70) );
$dc->FillRectangle(new Color(0,0,255), $rect2);
echo "<br>is intersect with : " . $rect1->IntersectWith($rect2) ."<br>";
echo "<br>rect2 is Contains : " . $rect2->Contains( new Point(123,72) ) ."<br>";
if( $rect1->IntersectWith($rect2) ) {
$rect3 = $rect1->Intersect($rect2);
$dc->FillRectangle(new Color(255,0,0), $rect3);
}
$bitmap->SaveAs("images/test1.jpg");
</script>
<img src="images/test1.jpg">ويكون الناتج كما يلي

مثال أخر
<script language="php">
include_once "../bin/System.Drawing.php";
$bitmap = new Bitmap(new Color(220,220,0), 300, 400 );
$dc = $bitmap->CreateGraphics();
$font = new Font("fonts/trado.ttf",14);
$dc->DrawString("HI GDI+", $font, new Color(0,0,255), new Point(180, 150) );
$dc->DrawString("HI GDI+", $font, new Color(255,0,255), new Point(170, 150) ,90);
$bitmap->SaveAs("images/testString1.jpg");
</script>
<img src="images/testString1.jpg">ويكون الناتج كما يلي

وقد أرفقت هنا مثال لإستخدام المجموعة System.Drawing
(لاحظ أن هذا الإطار يعمل مع الإصدار الخامس PHP5)
في إنتظار اي إستفسار في هذا الموضوع
انتظروني قريبا مع الدرس القادم والمجموعة System.IO , والله الموفق

