31-07-15, 03:07 AM
السلام عليكم
هذا المقال او المثال منقول من المنتدى القديم وهو للاخ زيد من العراق
بالاول راح اشرح ما هو شريط الصور ,, شريط الصور هو راح يكون مصفوفة صور مرئية جنب الى جنب او من اعلى الى اسفل ولهذا اسميته شريط الصور
اذا فتحت برنامج Microsoft Office 2010 Picture Maneger راح تشوف انو في طريقة لتصفح الصور وهي مثل شريط يحوي صور عديدة عندما تقوم بأختيار صورة يتم عرضها بسهولة
احنا راح نسوي شي مشابه ,, ان شاء الله يكون سهل ولن يكون هناك تعقديات
اكيد تحمستم للموضوع ... اذا خلي نبدأ
بالاول راح نقوم بصنع UserControl ,, لا تخاف من من اليوزر كنترول اذا كنت مبتدئ ما راح نقوم بعمل شي معقد وانما ستكون حاوية بسيطة للصورة ولكن سيكون بها اطار ويتغير لونه عند مرور الماوس عليه ويرجع الى لونه الاصلي عند ذهاب الماوس من مساحة ابعاده . . .
اذا ابدأ مشروع جديد - من قائمة المشروع right click على ايقونه المشروع لعمل Add Item من هناك قم بأختار اليوزر كنترول وليكن اسمها ImageContainer ( حاوية الصورة )
راح يضهر لك نافذة الاداة قم ببساطة بأضافة PictureBox الي الاداة واهم شي بالموضوع ان تضع مسافة بين حدود الاداة ( قصدي ان لا تكون متلاصقة بكل الجهات )
لحد الان كلشيء سهل من قائمة خائص الــ PictureBox
قم بتغيير خاصية SizeMode الى Zoom
قم بتغيير خاصية Anchor الى Top,Left,Right,Bottom ( كل الجهات )
والان مع الكود . . . ادخل الي صفحة الكود ولنقم بوضع خصائص اضافية للأداة
رموز PHP:
رموز PHP:
الخاصية السابقة ستكون اللون الخاص بالأطراف وسيكون شيء مثل اطار للحاوية
والان مع اللون الي يظهر عند مرور الماوس على الاداة
رموز PHP:
رموز PHP:
والان مع الخاصية العامة public والي هي الصورة
رموز PHP:
والان اعطي متغير ليثبت اننا في الوضع العادي ( بدون مرور الماوس على الاداة ) او لا !!!
رموز PHP:
والان مع حدث رسم الحدود على الاداة والي راح تكون مثل اطار كما ذكرت سابقا
والي راح يكون في حدث الـــ Paint
رموز PHP:
والان في حدث الــ MouseHover سنقوم بأستدعاء حدث الرسم وتغيير قيمة الوضع العادي الى false كالاتي :
رموز PHP:
والان عند خروج الماوس من الاداة راح نرجع على الوضع العادي :
رموز PHP:
والان الاحداث السابقة لا تفعل شيئا عند دخول المواس في منطقة الصورة لذلك لازم نعطي نفس الاحداث الي الــ PictureBox
رموز PHP:
والان اذا قام المستخدم بالضغط على الــ PictureBox راح تقوم الاداة بأستدعاء حدث الــ Click الخاص بها وليس الخاص بــ PictureBox كالاتي :
رموز PHP:
ملاحطة : الالوان الخاصة برسم الحدود يمكن تغييرها ضمن الفورم او الــ Run-time بصورة public
الان وبكل سهولة انتهينا من الدرس الاول وهو صنع الاداة
ياريت تكون هناك مشاركات بيها الاداة كاملة حتى اشوف كيفية عملكم للأداة واساعدكم بأس استفسار اذا احتاجيتم ( ولو اشوف الدرس سهل )
الدرس الثاني راح يكون عن كيفية استخدام الاداة في برنامج وكيفية استعمالها والعبث بها بكل الوسائل
في انتظار مشاركاتكم , اقتراحاتكم , تعليقاتكم
تحياتي وبالتوفيق . . . اخوكم زيــد
__________________
هذا المقال او المثال منقول من المنتدى القديم وهو للاخ زيد من العراق
بالاول راح اشرح ما هو شريط الصور ,, شريط الصور هو راح يكون مصفوفة صور مرئية جنب الى جنب او من اعلى الى اسفل ولهذا اسميته شريط الصور
اذا فتحت برنامج Microsoft Office 2010 Picture Maneger راح تشوف انو في طريقة لتصفح الصور وهي مثل شريط يحوي صور عديدة عندما تقوم بأختيار صورة يتم عرضها بسهولة
احنا راح نسوي شي مشابه ,, ان شاء الله يكون سهل ولن يكون هناك تعقديات
اكيد تحمستم للموضوع ... اذا خلي نبدأ
بالاول راح نقوم بصنع UserControl ,, لا تخاف من من اليوزر كنترول اذا كنت مبتدئ ما راح نقوم بعمل شي معقد وانما ستكون حاوية بسيطة للصورة ولكن سيكون بها اطار ويتغير لونه عند مرور الماوس عليه ويرجع الى لونه الاصلي عند ذهاب الماوس من مساحة ابعاده . . .
اذا ابدأ مشروع جديد - من قائمة المشروع right click على ايقونه المشروع لعمل Add Item من هناك قم بأختار اليوزر كنترول وليكن اسمها ImageContainer ( حاوية الصورة )
راح يضهر لك نافذة الاداة قم ببساطة بأضافة PictureBox الي الاداة واهم شي بالموضوع ان تضع مسافة بين حدود الاداة ( قصدي ان لا تكون متلاصقة بكل الجهات )
لحد الان كلشيء سهل من قائمة خائص الــ PictureBox
قم بتغيير خاصية SizeMode الى Zoom
قم بتغيير خاصية Anchor الى Top,Left,Right,Bottom ( كل الجهات )
والان مع الكود . . . ادخل الي صفحة الكود ولنقم بوضع خصائص اضافية للأداة
رموز PHP:
كود :
Color normalColor = Color.Black;
رموز PHP:
كود :
public Color BorderColor
{
set { normalColor = value;}
get { return normalColor; }
}
الخاصية السابقة ستكون اللون الخاص بالأطراف وسيكون شيء مثل اطار للحاوية
والان مع اللون الي يظهر عند مرور الماوس على الاداة
رموز PHP:
كود :
Color hoverColor = Color.Orange;
رموز PHP:
كود :
public Color HoverColor
{
set { hoverColor = value; }
get { return hoverColor; }
}
والان مع الخاصية العامة public والي هي الصورة
رموز PHP:
كود :
public Image Image
{
set { pictureBox1.Image = value; }
get { return pictureBox1.Image; }
}
والان اعطي متغير ليثبت اننا في الوضع العادي ( بدون مرور الماوس على الاداة ) او لا !!!
رموز PHP:
كود :
bool normalMode = true;
والان مع حدث رسم الحدود على الاداة والي راح تكون مثل اطار كما ذكرت سابقا
والي راح يكون في حدث الـــ Paint
رموز PHP:
كود :
private void ImageContainer_Paint(object sender, PaintEventArgs e)
{
if (normalMode)
{
e.Graphics.DrawRectangle(new Pen(normalColor, 3), new Rectangle(0, 0, Width - 1, Height - 1));
}
else
{
e.Graphics.DrawRectangle(new Pen(hoverColor, 3), new Rectangle(0, 0, Width - 1, Height - 1));
}
}
والان في حدث الــ MouseHover سنقوم بأستدعاء حدث الرسم وتغيير قيمة الوضع العادي الى false كالاتي :
رموز PHP:
كود :
private void ImageContainer_MouseHover(object sender, EventArgs e)
{
normalMode = false;
Invalidate();
}
والان عند خروج الماوس من الاداة راح نرجع على الوضع العادي :
رموز PHP:
كود :
private void ImageContainer_MouseLeave(object sender, EventArgs e)
{
normalMode = true;
Invalidate();
}
والان الاحداث السابقة لا تفعل شيئا عند دخول المواس في منطقة الصورة لذلك لازم نعطي نفس الاحداث الي الــ PictureBox
رموز PHP:
كود :
private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
OnMouseHover(e);
}
والان اذا قام المستخدم بالضغط على الــ PictureBox راح تقوم الاداة بأستدعاء حدث الــ Click الخاص بها وليس الخاص بــ PictureBox كالاتي :
رموز PHP:
كود :
private void pictureBox1_Click(object sender, EventArgs e)
{
OnClick(e);
}
ملاحطة : الالوان الخاصة برسم الحدود يمكن تغييرها ضمن الفورم او الــ Run-time بصورة public
الان وبكل سهولة انتهينا من الدرس الاول وهو صنع الاداة
ياريت تكون هناك مشاركات بيها الاداة كاملة حتى اشوف كيفية عملكم للأداة واساعدكم بأس استفسار اذا احتاجيتم ( ولو اشوف الدرس سهل )
الدرس الثاني راح يكون عن كيفية استخدام الاداة في برنامج وكيفية استعمالها والعبث بها بكل الوسائل
في انتظار مشاركاتكم , اقتراحاتكم , تعليقاتكم
تحياتي وبالتوفيق . . . اخوكم زيــد
__________________