السلام عليكم ورحمة الله وبركاته:
إخواني إن سمحتم لي سوف أبدأ بوضع دروس تتعلق بمواضيع مختلفة ومهمة بلغة الـ C# علماً أنني حصلت على هذه الدروس من المنتدى لكنها مكتوبة بلغة الـ VB.NET وأردت إعادة صياغتها بلغة الـ C# لتكون الفائدة مزدوجة.
أرجو من كل عضو أن يبدي رأيه وأن يصحح لنا الأخطاء بدون تردد لأن الهدف هو التعلم والتعلم يأتي نتيجة ارتكاب الأخطاء ومن ثم تصحيحها, والله الموفق.
وسوف يكون الدرس الأول عن التعامل مع الصورة بشكل بسيط.
بعض العمليات على الصورة
سوف نقوم بكتابة برنامج يقوم بتحميل صورة ما وإجراء بعض العمليات عليها:
1. من أجل تحميل الصورة استخدم OpenDilaogFile
if (dlgFile.ShowDialog == DialogResult.OK)
{
imgBox.Image.FromFile(dlgFile.FileName);
}
2. من أجل تصغير الصورة نستخدم التابع GetThumbnailImage الذي يأخذ أربعة متحولات هي
عرض الصورة الجديد – ارتفاع الصورة الجديد – قيمة نستطيع وضعها null – القيمة IntPtr.Zero.
imgBox.Image = imgBox.Image.GetThumbnailImage(NewWidth, NewHight,
null, IntPtr.Zero);
imgBox.Image.Save("c:\\MyImage.jpg")
imgBox.Update();
الكود السابق يقوم بتصغير \ تكبير الصورة ويحفظها على ملف في السواقة C ومن ثم يقوم بعملية Refresh لصندوق الصورة ليتم عرض الصورة الجديدة بعد تغيير حجمها.
3. تدوير الصورة
Image MyImg = imgBox.Image;
MyImg.RotateFlip(RotateFlipType.Rotate270FlipXY);
imgBox.Image = MyImg;
الكود السابق يقوم بتدوير الصورة بمقدار 270 درجة, وقد استخدمنا من أجل ذلك التابع RotateFlip الذي له وسيط واحد من النمط التعدادي RotateFlipType الذي يحتوي على عدد من القيم الجاهزة من أجل تدوير الصورة.
4. تغيير Format الصورة أي طريقة تمثيل هذه الصورة
imgBox.Image.Save("c:\\mine.bmp", ImageFormat.Bmp);
الكود السابق يحفظ الصورة ذات الامتداد jpg بصورة امتدادها bmp, وذلك باستخدام التابع save الذي يأخذ مسار الصورة, و Format الصورة الجديد.
ملاحظات:
1. imgBox هو عبارة عن PictureBox يتم الحصول عليه من شريط الأدوات.
2. الكود الكامل للبرنامج مُرفق كملف zip.
3. البرنامج مكتوب باستخدام Visual Studio.Net النسخة الأولى, ولكنه يعمل أيضاً على النسخة الثانية من البرنامج.
4. أرجو أن لا يتردد أي شخص في طرح أي سؤال سواءً كان يتعلق بالدرس أو بلغة C# بشكل عام.