السلام عليكم..الحقيقية أريد جواب هذا السؤال بسرعة وهو كيف اجعل خلفية أداة الLabelشفافة بحيث مثلا إذا وضعتها على
صورة تظهر الكتابة فقط ...جربت بال Transparent و لمت تنجح ..ستعرفون هدف هذا السؤال قريبا ..
و شكرا
السلام عليكم..الحقيقية أريد جواب هذا السؤال بسرعة وهو كيف اجعل خلفية أداة الLabelشفافة بحيث مثلا إذا وضعتها على
صورة تظهر الكتابة فقط ...جربت بال Transparent و لمت تنجح ..ستعرفون هدف هذا السؤال قريبا ..
و شكرا
السلام عليكم
خاصية الشفافية في العنوان Label ستظهر لون النموذج وليس الصورة و السبب أن العنوان هو إحدى مواد النموذج
لذلك سيظهر لون الاب مباشرتًا , لكن هنالك طريقة أخرى وهي إستخدام الرسم بدل العنوان, إليك ذلك
Dim f As New Font("Times New Roman", 25, Drawing.FontStyle.Bold)
e.Graphics.DrawString(strImageName, f, Brushes.Black, 4, 4)
e.Graphics.DrawString(strImageName, f, Brushes.White, 2, 2)شاهد الملف المرفق.
في المثال يتضح المقال
السلام عليكم
هناك طريقة أخرى
في خصائص النموذج (form) تجد الخاصية transparencyKey ضع فيها اللون الذي تريده أن يصبح شفافا وثم غير لون خلفية العنوان label إلى نفس اللون
نفذ البرنامج وستلاحظ ان أداة العنوان صارت شفافة
ونصيحة ليك أخي جرب أن تضع أداتي نص وعنوان ( textbox - label ) ولاحظ الفرق !
أخي الكريم الغملاسي شكرا على كل جهودك معي..(أما زلت محتفظا بهذا البرنامج ^.^)..
طريقة جميلة و فعالة ولكنها لا تناسب فكرة الأداة التي أقوم بتصميمها و هي عبارة شريط تقدم يفترض وجود label تكون شفافة بحيث عندما يمر الشريط من خلفها تكون شفافة تظهر الكتابة فقط ..ربما يمكن تطبيق هذا الكود و لكنه في هذه الحالة غير مريح للبرنامج .
هل هناك طريقة مباشرة مثل vb6وشكرا لك.
أخي الكريم حسن المنتصر شكرا لك طبقت الطريقة بحذافيرها و لكنها لم تنجح بقي للLabelخلفية مقرفة ..هل هناك حركة يجب القيام بها ..
معقول يا جماعة أي ذهبت هذه الخاصية من ال.Netالرائع
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اخي الكريم
اليك هذا الكود مجرب 100% على vb 2005 beta 2
الصوره طبعا موجوده في PictureBox1 وتضع Label فوقها ثم تكتب الكود التالي : تعطيك النتيجة اثناء التنفيذ فقط وليس اثناء التصميم
Label1.Parent = PictureBox1 Label1.BackColor = Color.Transparent
وتحياتي للجميع
تسلم أخي الكريم jbsa فعلا هذا هو الحل النهائي و الصالح ..و شكرا لك و لكل الإخوة ..
أخي الكريم و لكن هذا الكود لا يطبق إلا على عنصر واحد فقط ..فإذا كتبنا الكود التالي:
Label1.Parent = PictureBox1
Label1.Parent = PictureBox2
Label1.BackColor = Color.Transparen
فإنه سكون شفافة بالنسبة للأول و لن تكون شفافة للآخر هل هناك طريقة لجعلها شفافة لكل شيء ..
و أيضا عند كتاب هذا الكود يتغير مكان ارتسام الLabel مالسبب يا ترى..
و شكرا لك
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اخي الكريم eias
اما عن تغيير المكان فالسبب انه عند وضع label ياخذ location على الفورم وعند عمل parent يبقى location تبع الفورم لذلك
فاذا كانت الصوره مثلا على النصف الايمين واردت وضع label فيجب ان تضعها النصف الايسر من الفورم.
ما اقصده هو label.location = 100,100 فانه سياخذ نفس الارقام عند عمل parent ويضع الليبل على الموقع 100,100 من الصورة.
لذلك يجب عليك تغيير location واعادة تحديده
Label1.BackColor = Color.Transparent Label1.Parent = PictureBox2 Label1.Location = New Point(20, 20)
هذا يعني انه يظهر على الاول وايضا يظهر على الثاني اذا قمت بتحديد الموقع.
اما اذا بدك تكون شفافه للكل يجب عليك عمل هذا class واضافته على الفورم
Public Class NewLabel Inherits System.Windows.Forms.Label Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) ' Create font and brush. MyBase.OnPaint(e) Me.BackColor = Color.Transparent e.Graphics.DrawString(Me.Text, Font, Brushes.Transparent, 0, 0) End Sub End Class
ارجو ان اكون قد وضحت ما هو المقصود
وتحياتي لك
أخي الكريم شكرا جدا جدا ..بس العفوا منك لم أستطع تجربتها الآن سأرد لك خبر
السلام عليكم ..أخي الكريم (بعرف الكل يشكو مني ^.^) الحقيقة لا مشكلة حاليا بالنسبة للموقع و لكن الشكلة بالنسبة لجعلها شفافة لكل العناصر أعتقد أن كودك الذي يعتمد على GDI+ لن يعمل مع عنصر الLabelلأنك عتمدت على الرسم الشفاف ..طيب ممكن مثال بحيث أضفت أي صورة أو غيرت خلفية الفورم تبقى الLabel شفافة ..^*.*^
السلام عليكم
انا ايضا واجهتني هده المشكلة ولكن وجدت ان حلها بسيط
يمكن ان تفتح الregion ستجد
me.control.add(label1,)l
ضيفpicturebox
me.picturebox1.control.add(label1,)l
ثم اجعل لون label transparent
أخي الكريم MyName الحقيقة الكود صحيح ولكن لا يعمل إلا إذا وضع بحدث غير الregion مثل الForm.Load ولكن المشكلة نفسها هذا يجعله شفاف بالنسبة للصورة فقط ولكن لو أتيت و لكن ستصبح الLabel غير مرئية بالنسبة لباقي العناصر يعني المشكلة أنك عم تجعل الLabelتابع لل PictureBox و ليس للForm هل هناك طريقة تجعل الLabel شفافة و لكل العناصر و مرئية ..شكرا لك.
يبدو أن الردود لم تفي بالمطلوب ... :(
و نأسف على التأخر فقد ذكرت أن سؤالك مستعجل :(
محاولة أخرى من قبلي ... :blink:
إذا كان ما تريده هو الموضح بالصورة فقم بتحميل المرفق ...
ولا يهمك MoaM على التأخير ولكن المشكلة لم تحل للأسف لأن كل الطرق السابقة تجعل الLabel شفافة لPictureboxواحد فقط (أو عنصر واحد فقط )و أنا أريد جعلها شفافة لPicturebox و Panel معا .
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اخي eias ،، امازلت تنتظر ام وجدت الحل ،،،، جرب هذا المثال المرفق بالضغط على button1
وهو مازال بحاجة الى تنقيح لكن الفكرة هي البداية
لقد قمت بعمل ما تريد عن طريق فورم ووضعت فيه ليبل واحد فقط ويجب ان يكون الفورم بالخصائص التالية
Label1.AutoSize = True
Label1.BackColor = System.Drawing.Color.Transparent
Label1.Dock = System.Windows.Forms.DockStyle.Fill
'
'Form
'
AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
AutoSize = True
AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
BackgroundImage = TransparentLabel.Resources.red
FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
ShowInTaskbar = False
StartPosition = System.Windows.Forms.FormStartPosition.Manual
TransparencyKey = System.Drawing.Color.Red
افتح paint brush وقم بعمل صورة فيها اللون الاحمر فقط ثم خزنها وضعها BackgroundImage وثم ضع TransparencyKey نفس لون
الصورة فيظهر جميع ما على الفورم شفاف ومن ثم من الفورم الاول غير ما شئت في label ثم حدد موقع الفورم الشفاف واظهره فيظهر label شفاف على
اي شيئ في الفورم الاول
راجع المثال وقم بتنقيحه حسب ما تريد
ولك مني كل التحية.
تم تعديل هذه المشاركة بواسطة jbsa في 25 سبتمبر 2005 في 14:51
اخي الكريم jbsa شكرا لك على العودة للموضوع بعدما أكل عليه الدهر و نــام(^.^)
الحقيقية للأسف لم أستطع فتح الملف لأن الvb.net عندي 2003و انت عندك 2005(أنا بس بدي أعرف كيف جبتوه لسا ما نزل عالسوق)
و لكن الطريقة مبهمة شوي ..أو ربما ستكون صعبة التطبيق لأني اعتمدت على تغيير خلفية الأداة ..
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
يوجد العديد من الطرق التي يمكن بواسطتها جعل الـ Label شفافا كما اوضح الشباب كما ان الإعتماد على Transparent Color ايضا يفي بغرض الشفافية و يمكن ايضا اعطاء مسئلة المناطق Regions نظرة اكثر تعمقا في مشكلة كهذه فالـ Region هي المنطقة التي يحددها النظام لنافذة معينة فالفورم مثلا لها Region مربعة اما اذا كنت تستخدم ويندوز اكس بي فستجد ان الـ Region التابعة للفورم ليست مربعة تماما و انما اركانها العلوية مدورة قليلا و كذلك الحال في برنامج الميديا بلاير عندما تقوم بتطبيق Skin معين تجد ان شكل الفورم ليس مربعا و انما له اشكال مختلفة بحسب الصور المطلوبة.
و نحن هنا سنستخدم نفس المبدأ و لكننا سنجعل شكل الليبل يتخد شكل ( النص الذي داخله ) .... وهذه بالضبط هي الفكرة و اما كيف نقوم بها فهناك الكثير من الطرق ... خذ ابسطها مثلا
يوجد كائن في الفيجوال بيسكNET. بإسم Region ويوجد خاصية لكل كنترول على الفورم و الفورم نفسها من نفس هذا النوع (Region) ... و يمكنك ان تنشىء كائن جديد من هذا النوع بالشكل التالي :
Dim myRegion As New Region()
و يمكن بعدها ان تقوم بإسناد الـ Region الجديد الى الليبل بالشكل التالي :
Label1.Region = myRegion
و لكننا سنقوم بتعديله بما يلزم قبل إسناده الى الليبل .... و انا هنا سأستخدم بإذن الله تعالى الكائن GraphicsPath بالشكل التالي :
Dim Pth As New System.Drawing.Drawing2D.GraphicsPath Pth.AddString(lbl.Text, lbl.Font.FontFamily, lbl.Font.Style, 25, New PointF(0, 0), New StringFormat) Dim myRegion As New Region(Pth) lbl.Region = New Region(Pth)
ما قمت به في الاعلى هو إنشاء مسار رسومي GraphicsPath بإسم pth ثم اضفت اليه (AddString) النص الموجود في الليبل المسمى lbl و بذلك اصبح لدي مسار النص الذي اريده كاملا بعدها مباشرة انشئت الكائن myRegion إعتمادا على المسار pth و اسندناها اخيرا الى الليبل و بهذا بإذن الله تعالى يتكون لديك ليبل شفاف كليا لانه اتخد شكل النص الذي داخله.
و لكن توجد مشكلة بسيطة في هذه الطريقة و هي انه يكون الشكل مشوه عندما يكون النص صغيرا لهذا اذا دققت على الكود السابق لوجدت اني اعتمدت على الرقم 25 كاحجم للنص و هو حجم كبير نسبيا.
يمكنك ان تقوم بعمل افكار اخرى لتعديل الـ Region التابع لليبل الذي تريد جعله شفافا تكون اكثر دقة من الطريقة السابقة و على العموم تجد في المثال المرفق بإذن الله تعالى مثالان و جعلت كل واحدة منهما بإسم مختلف MakeTrans و MakeTrans2 .
ملاحظة : لقد وضعت صورة في PictureBox و Panel ووضعت عليهما ليبيل شفاف لأنني لحظت من كلام اخي العزيز إياس انه يريد مثالا على ذلك
تمنيت ان يكون لدي المزيد من الوقت لكي اقوم بتعديل المثال بما يناسب متطلباتك اخي الحبيب و لكن بإذن الله تعالى لنا عودة إن لم يوافق المثال المرفق مبتغاك إياس
السام عليكم و رحمة الله و بركاته
مواضيع برمجية تقنية جديدة
----------------------------------------------------------------------------------------------------------------------------------------------
• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
• برنامج للبحث في الملفات ومحتواياتها (VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
مواضيع برمجية تقنية قديمة
----------------------------------------------------------------------------------------------------------------------------------------------
• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
السلام عليكم..
الحقيقية أخي الكريم رغيد الطيب و أنا أقرا الطريقة الأولى كان يظهر ذكائك البرمجي الذي يزيد من احترامي لك.. ^.^
شكرا الطريقة رائعة بس أنا شخصيا بحتاج طريقة تقبل كل الاحتمالات لأنها أداة و لا أعرف ماذا سيعمل المبرمج..
أنا طبقت الطريقة الثانية ..على الرغم من إني كنت بتمنى توضيحها لاني ضعت فيها و الحمد لله..
بس أيضا صارت معي مشاكل كتير بالطريقة الثانية ..
ما بعرف استاذي بتحب أرفق الأداة حتى ترى بنفسك المشكلة ..
إيـاس
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
الأخ العزيز إياس ما كان في إقتراحي ما يستحق ان يلتفتت اليه اما اكود اخوتي الغملاسي و MoaM و myname و jbsa و الجميع
و اما الطريقة الثانية التي استفسرت عنها فلا تختلف عن سابقتها سوى أني لا اترك الخيار امام الفيجوال بيسك لكي يقوم بتحديد المسار الخاص بالنص الموجود بداخل الليبل و إنما قمت بتحديد المسار برمجيا حيث جعلت خلفية الليبل بيضاء ثم بحتث في الليبل طولا و عرضا عن اي نقطة لونها يختلف عن اللون الابيض ( عن طريق GetPixel ) و انا اعلم انه لا يجود منطقة اخرى سوى البيضاء للخلفية و السوداء للنص ومع كل سطر اجد فيه منطقة سوداء اضيفها للـ Region التي انشئها عن طريق الدالة CombineRgn و التي تقوم بمزج منطقتان.
و بالتالي ففكرة الكود كليا هو ان اقوم بتكوين منطقة Region عبارة عن اول منطقة سوداء اجدها ثم اقوم بإضافة اي منطقة سوداء اخرى اجدها الى هذه الـ Region حتى ينتهي بي الامر و معي منطقة تمثل منطقة النص فاسندها اخيرا لليبل فيصبح مساوي تماما لنص الذي داخله .... و هذا هو مفهوم الفكرة و اما وجود اي استفسار في اي جزء من الكود او اي دالة فيه فيسرني كثيرا مناقشتها معك اخي
و اما المشاكل التي ظهرت لك عزيزي في الاداه التي تصممها فما كنا لنتركك اخي تفكر في حلها لوحدك و يسرنا ان نفكر في حلولا لها لأنني اعلم يقينا بانها ستكون اداه جميلة كما عودتنا اخي العزيز بإذن الله تعالى ... فيمكنك ان ترفقها اخي كما تشاء و تأكد انني سأكون سعيدا بإذن الله تعالى في رؤية اداتك التي لا اشك في روعتها اخي.
ارتككم في امان الله تعالى و لنا بإذنه إن شاء عودة
السلام عليكم و رحمة الله و بركاته
مواضيع برمجية تقنية جديدة
----------------------------------------------------------------------------------------------------------------------------------------------
• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
• برنامج للبحث في الملفات ومحتواياتها (VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
مواضيع برمجية تقنية قديمة
----------------------------------------------------------------------------------------------------------------------------------------------
• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)
----------------------------------------------------------------------------------------------------------------------------------------------
• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)
----------------------------------------------------------------------------------------------------------------------------------------------
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…