الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحديد صورة كخلفية لفورم Mdi

بدأه صاحب همة في 7 مايو 2012 · 15 رد · 2,258 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

أسعد الله أوقاتكم بكل خير ، أعمل على دوت نيت 2005 ، وأريد تغيير صورة خلفية ويندوز فورم MDI ، تم عمل RTLLayout = True ، لكن المشكلة أن الصورة لا تظهر ، بحثت ولم أجد اجابة

هل أجد لديكم حلا ؟

شكرا مقدماً

من لمح فجر الأجر هان عليه ظلام التكليف

#2

السلام عليكم ورحمة الله وبركاته

أضف عنصر صندوق صورة PicturBox إلى الفورم الرئيسي واجعل خاصيته Dock تساوي الملء Fill واجعل خاصية SizeMode تساوي StretchImage ثم حمل الصورة التي تريد في صندوق الصورة.

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#3

عليكم السلام ورحمة الله وبركاته

شكرا لك أخي الكريم ، ما ذكرته يؤدي المطلوب لكن عند استدعاء أي فورم (Child Form) فانه لا يظهر (كأنه موجود خلف picturebox ) !!

من لمح فجر الأجر هان عليه ظلام التكليف

#4

اختار ال picturebox ثم اضغط على send to back من الاعلى سيظهر اى عنصر تضيفه على الفورم

73b14eadba.gif

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

لكل مبتدئى البرمجه برمجه بلغه السى شارب

تنصيب ويندوز 8 على vmware

#5

عندما يتم تحديد الفورم على أنه حاوي لفورمات أولاد يقوم بإضافة عنصر تحكم من النوع MdiClient والذي هو عبارة عن عنصر خاص لاحتواء فورم أبناء

ولهذا السبب كان إما يظهر الصورة أو الفورمز مع الأرضية الرمادية

وهو سبب اختفاء صورة أرضية الفورم الرئيسي لأنه عنصر يقع فوقه

لهذا وجب وضع الصورة على أرضية هذا العنصر وليس الفورم

لذا ضع الكود التالي في المشيد

    	public Form1()
    	{
        	InitializeComponent();
        	MdiClient mdiClient; 
        	mdiClient = (MdiClient)this.Controls[0];
        	mdiClient.BackgroundImage = img;
    	}

img هي متحول الذي ستضع فيه الصورة ;

وبإذن الله يتم الأمر ولكن احرص أن تكون الأرضية قابلة للتكرار لأنه سيكررها عندما تكبر الفورم

تم تعديل هذه المشاركة بواسطة المبرمج أبو أحمد في 7 مايو 2012 في 19:24

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#6

شكراً للأخوين الكريمين :

1- أخي محمد سلامة : send to back لمربع الصورة لا يجدي نفعاً لأني قد جربته مسبقاً.

2- أخي المبرمج أحمد : ما هو موجود لدي هو شبيه بما كتبته وأقوم بتغيير اللون وصورة الخلفية ، لكن الاول ينجح والثاني لا.

 foreach (Control ctl in this.Controls)
            {
                if (ctl is MdiClient)
                {
                    ctl.BackColor = Color.MintCream;
                    ctl.BackgroundImage = Image.FromFile("filename");
                    break;
                }
            }

وقد جربت الكود أعلاه مرتين : في Constructor أو حدث Form Load ، دون جدوى.

تم تعديل هذه المشاركة بواسطة صاحب همة في 8 مايو 2012 في 08:33

من لمح فجر الأجر هان عليه ظلام التكليف

#7

حياك الله أخي

أنا صراحة جربته وتاكدت منه قبل أن أضع الرد

حتى الكود الذي أنت وضعته يعمل بشكل جيد

على كل حال رفعت لك المشروع كاملا لتتأكد بنفسك

http://www.mediafire.com/?5zj45ga5y1vb6za

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#8

أخي الكريم

شكرا لك ، لكن هل يمكن تحويله الى نسخة 2008 أو 2005 حيث أنه لم يفتح وأظنه ذلك بسبب اختلاف الفريم وورك.

جزاك الله خير..

من لمح فجر الأجر هان عليه ظلام التكليف

#9

ما هو أحدث فريم وورك عندك ؟

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#10

حاليا لدي دوت نيت 2005 - فريم وورك 2.0

وكذلك 2008 - فريم وورك 3.0 - 3.5

من لمح فجر الأجر هان عليه ظلام التكليف

#11

تفضل أخي

http://www.mediafire...3458sv1t3ia8xdl

وضعت مجلد الصور داخل مجلد Debug لكي يصل إلى الصورة

أنت لك الخيار في تحديد مسار الصور

تم تعديل هذه المشاركة بواسطة المبرمج أبو أحمد في 8 مايو 2012 في 16:10

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#12

أتعبتك معي أخي الكريم .

ليس لدي اي مشكلة فيما أرسلته !!!

المشكلة عندما تكون RightToLeftLayout = True وكذلك RightToLeft =true لفورم ال Mdi ( ذكرت ذلك في أول مشاركة)

أرجو أن تكون الصورة قد اتضحت .

مع تقديري لكل جهدك - جعله الله في ميزان حسناتك.

من لمح فجر الأجر هان عليه ظلام التكليف

#13

بالنسبة لخاصية RightToLeft تكون قيمتها الافتراضية هي Inherit أي ترث القيمة من الأب الحاوي

ولهذا اجعل :

mdiClient.RightToLeft = RightToLeft.No ;

أما الفورمات الأبناء عين لها القيمة إلى Yes

frm2.RightToLeft = RightToLeft.Yes;

وبالتالي ستجد أن الفورم الرئيسي والفورمات الأبناء كلها عربية الاتجاه و فقط الأرضية أجنبية ولكن ستظهر الصورة

تم تعديل هذه المشاركة بواسطة المبرمج أبو أحمد في 8 مايو 2012 في 18:14

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#14

السلام عليكم ورحمة الله وبركاته

تم بحمد الله وبعد بحث وتجربة أمتدت لعدة ساعات الوصول لأفضل حل لهذه المشكلة

الفكرة تكمن في رسم الصورة ضمن العنصر الحاوي MdiClient من خلال إضافة حدث الرسم Paint للعنصر نفسه وليس للفورم

وعملية الرسم تتم من خلال إجراءات API وتحديدا وظيفة StretchDIBits التابعة للمكتبة GDI

قمت بوضع كل الاحتمالات لخاصية BackgroundImageLayout بحيث يتم رسم الصورة في الوسط أو يتم تكرارها أو تحجيمها بحسب المساحة أو توسيطها وهكذا

على كل حال هذا هو المشروع :

http://www.mediafire...aqnoxc0ny3yjx7c

حاولت القيام بعملية الرسم من خلال الجرافيك التابع للوسيط e وكذلك أنشأت كائن جرافيك جديد للعنصر MdiClient ولكن النتائج كانت سيئة ومشوهة

حتى توصلت للحل السابق فكانت نتائجه سليمة وتحاكي الأصلية تماماً

تم تعديل هذه المشاركة بواسطة المبرمج أبو أحمد في 9 مايو 2012 في 06:08

1

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#15

عليكم السلام ورحمة الله وبركاته

أكرمك الله أخي الكريم وبارك فيك وجزاك الجنة..كنت أبحث عن هذا الحل منذ فترة طويلة لكن أعياني البحث وأسأل الله ألا يحرمك الأجر.

ملحوظة صغيرة : الكود أعلاه ينتج صورة مقلوبة ، ولذلك قمت بقلب الصورة الأصلية حتى تظهر صحيحة :)

شكرا لك أخي مرة أخرى.

من لمح فجر الأجر هان عليه ظلام التكليف

#16
صاحب همة كتب:

عليكم السلام ورحمة الله وبركاته

أكرمك الله أخي الكريم وبارك فيك وجزاك الجنة..كنت أبحث عن هذا الحل منذ فترة طويلة لكن أعياني البحث وأسأل الله ألا يحرمك الأجر.

ملحوظة صغيرة : الكود أعلاه ينتج صورة مقلوبة ، ولذلك قمت بقلب الصورة الأصلية حتى تظهر صحيحة :)

شكرا لك أخي مرة أخرى.

وإياكم أخي الطيب

بالنسبة لقلب الصورة أنا لم ألحظها لأني كنت أجرب على صور متناظرة قابلة للتكرار ولكن حلها سهل للغاية

تعليمة النسخ تسمح لك بعمليات تغيير الحجم وقلب أفقي أو عمودي ضمنا

وبالتالي لا يلزمك إلى أنه في حال كان الاتجاه عربي أن تجعل العرض سالبا لقلب الصورة أفقيا والارتفاع سالبا للقلب الأفقي وكلاهما للدوران 180 درجة وهي المشكلة الحالية

أي أنه في الكود السابق

ضع إشارة ناقص أمام البارمترين الرابع والخامس في كل تعليمات StretchDIBits ( العرض والارتفاع للصورة الهدف ) لتقوم الوظيفة بقلب الصورة أثناء النسخ

وحياك الله

تم تعديل هذه المشاركة بواسطة المبرمج أبو أحمد في 9 مايو 2012 في 11:31

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…