تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مثال] من المنتدى القديم شرح كيفية صنع " شريط الصور " خطوة بخطوة + الشرح التفصيلي (2من2)
#1
السلام عليكم 

بالاول الي ما قرأ الدرس الاول وهو صنع اداة ImageContainer الي راح نستخدمها بالبرنامج 

شرح كيفية صنع " شريط الصور " خطوة بخطوة + الشرح التفصيلي ( درس 1 من 2 )

والان بعد ان انتهيتو من صنع الاداة لنقم بأستعمالها بالمشروع 

اذهب الى الفورم الرئيسي 

1 - قم بأضافة Panel وليكن اسمها pnlPictures ( الي راح راح يكون الشريط بداخلها )
2 - قم بتغيير خاصية Dock الى Bottom ( حتى يكون بالجهة التحتية للفورم )
3 - خاصية Height لتكن قيمتها 300 او مثل ما تحب 
4 - خاصية AutoScroll لتكن true 
--------------------------------------------

4 - قم بأضافة PictureBox وليكن اسمه pic 
5 - قم بتغيير خاصية Dock الى Fill ( حتى يملأ باقي مساحة الفورم )

--------------------------------------------

6 - قم بأضافة Button بأي شكل او اي مكان تحبه اي حتى ممكن بــ ToolStrip يكون احلى 
7 - اكتب نصه مثلا Open Folder او Browse Folder ( لان عمله راح يكون فتح فولدر واخذ الصور منه )
--------------------------------------------

والان اضافة لكود ImageContainer :

قبل كل شيء لنقم بعمل اضافة بسيطة في كود الاداة واضافة الخاصية IsNormalMode كالاتي :

رموز PHP:

كود :
        public bool IsNormalMode 
        { 
            get { return normalMode; } 
        }  

راح تفيدنا بعرفة اذا كان True يعني ان الاداة بالحالة العادية وان الماوس ليس بداخل محيط الاداة واذا False يعني العكس . . . 

------------------------------------------

والان مع كود الفورم : 

قبل كل شيء خلي نقوم بعمل Method الي تجلب ملفات الصور من فولد معين وهي الدالة الرئيسية بالفورم : 

رموز PHP:

كود :
        void LoadPictures(string folder) 
        { 
            int startX = 5; 
            int startY = 8; 
            pnlPictures.Controls.Clear(); 
            string[] files = Directory.GetFiles(folder, "*.*", System.IO.SearchOption.TopDirectoryOnly); 
                foreach (string file in files) 
                { 
                    if(file.EndsWith(".jpg") || file.EndsWith(".png") || file.EndsWith(".bmp") || file.EndsWith(".JPG") || file.EndsWith(".gif")) 
                    { 
                        ImageContainer img = new ImageContainer(); 
                        img.Location = new Point(startX,startY); 
                        img.Tag = file; 
                        img.Height = pnlPictures.Height - 30; 
                        img.Width = img.Height; 
                        img.Image = Image.FromFile(file); 
                        pnlPictures.Controls.Add(img); 
                        startX += img.Size.Width + 5; 
                    } 

                } 
        }  

الدالة السابقة يطلب بيها متغير سيكون مسار الفولدر

السطر التالي لمسح ما تحويته pnlPictures من ادوات 

رموز PHP:

كود :
pnlPictures.Controls.Clear();  

ثم اخذ كل الملفات الموجودة بالفولدر 

ثم اذا اي من الملفات ينتهي امتدادها بأي من امتدادات الصور ( الي انا اعرفها ) وممكن اذا تعرف غير امتدادات تقدر تضيفها 

بالنسبة لـ startX و startY راح يكون موقع الاداة بالنسبة لــ pnlPictures 

وزيادة الــ startX مع كل اضافة حتى يصبح شريط الصور افقي 

ثم اسناد قيمة الــ Image من قيمة المتغير file 

واخيرا اضافة الصورة الى pnlPictures 

------------------------------------------------------

هذه الدالة لم تنتهي لاننا لم نقم بوضع الــ Click Event Handler الى الاداة 
سنقوم بالتعديل بعد العملية التالية وهي الــ Method الي ستعمل عند ضغط الاداة بواسطة الماوس :

رموز PHP:

كود :
        private void ViewPicture(object sender,EventArgs e) 
        { 
            foreach (ImageContainer img in pnlPictures.Controls) 
            { 
                if (!img.IsNormalMode) 
                { 
                    Bitmap bmp = (Bitmap)img.Image; 
                    pictureBox1.Image = img.Image; 
                    if (bmp.Height <= 500 && bmp.Width <= 700) { pic.SizeMode = PictureBoxSizeMode.CenterImage; } else { pic.SizeMode = PictureBoxSizeMode.Zoom; } 
                    break; 
                } 
            } 
        }  

السطر الاخير من الدالة لمعرفة اذا كانت الصورة صغيرة سيكون عرضها بصورة عادي واكبر اكبر من الابعاد المختارة ستكون مصغرة الى الحجم الي يناسب حجم الــ pic 

والان من دالة LoadPictures قم بأضافة السطر البرمجي التالي : 

رموز PHP:

كود :
img.Click += new EventHandler(ViewPicture);  



[b]في كود الــ Button او الكود الي من خلاله نختار الفولدر كالاتي :

رموز PHP:
[/b]

كود :
FolderBrowserDialog fbd = new FolderBrowserDialog(); 
if(fbd.ShowDialog == DialogResault.OK) 
  { 
    LoadPictures(fbd.SelectedPath); 
  }  
[color=#007700][/color]




الان شغل البرنامج وابدأ العمل عليه ,, المفروض يعمل بصورة صحيحة 100% 
كان عندي الف تطوير للمثال السابق بس حبيت اعطي فكرة الاساسية حتى المبتدئين ما يواجهون تعقيدات ,, الي يحب اضيفله تطويرات تخص الصور او عملية Load ياريت يشاركنا 

منتظر مشاركاتكم الي تحتوي المثال الي كملناه قبل شوية واستفساراتكم وتعليقاتكم 
كملنا والحمد لله الدرس الثاني والاخير 
تحياتي وبالتوفيق للكل ,, اخوكم زيد
الرد }}}}
تم الشكر بواسطة: أبو عمر , أبو عمر
#2
بارك الله فيك
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 رَبِّ اغْفِرْ لِي وَلِوَالِدَيَّ
Heart
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مشروع] محول صيغ الصور ربيع 11 1,076 18-09-16, 10:23 PM
آخر رد: Amir_alzubidy
  [VB.NET] بدي مثال جاهز مع الشرح دخت ولا حصلت اي نتيجة theghost 11 1,395 06-09-15, 01:19 AM
آخر رد: أبو عمر
  [مثال] من المنتدى القديم شرح كيفية صنع " شريط الصور " خطوة بخطوة + الشرح التفصيلي (1من2) a_senan 0 431 31-07-15, 03:07 AM
آخر رد: a_senan
  [سؤال] كيفية التغلب على رمز ##### عند ادراج حقل رقمى فى الكريستال روبيرت اي كيفية تصغير الار roony 3 440 26-06-15, 11:53 AM
آخر رد: roony
  [سؤال] كيفية التغلب على رمز ##### عند ادراج حقل رقمى فى الكريستال roony 0 250 19-06-15, 07:08 PM
آخر رد: roony

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم