السلام عليكم اولا لقد ارفقت صورة من البرنامج خاصتي لاشرح لكم المشكلة
ثانيا برنامجي انا قمت بعمل ثيمه له علي الفوتوشوب وبعد الانتهاء قمت بوضعها في البرنامج وشكلها في الاعلي
الان مشكلتي هي اني اريد عندما اضغط علي 1HD او HD7 او اي HD موجود في برنامجي اريد ان يعمل لي امر معين فهل من اداة
اضعها فوق اي قناة منهم وتكون مخفية وعند الضغط عليها كانك قمت بالضغط ع القناة وشكرا
اخي الكريم ارجو منك الاهتمام بعنوان الموضوع لتلقي الاجابة الشافية والكافية
بالنسبة لموضعك بامكانك وضع ليبل في المكان المراد تكون خلفيته شفافه يوفي بالغرض ان شاء الله
يعطيك العافية
لم يجدي نفع الليبول لسببان الاول لانه عندما امسح منه التيكست لايعمل اي امر عندما اضغط عليه وايضا لانه صغير جدا عندما امسح من التيسكت
عزيزي ,حك
ففي حل انك تقص الصورة HD1 , HD2 وتضعها فوق الصورة بحيث ماتبين بستعمتال اداة PictureBox
اخي الكريم ان كنت تريد ان تعمل بطريقة احترافية فيتوجب عليك العمل مع دوال الرسم و معالجة احداث الضغط في اماكن محددة توافق اماكن الازرار
انا افترض ان كل ما على الواجهة هو عبارة عن صورة ثابته
لذا الحل الوحيد هو اضافة حدث في نقاط محددة توافق مواقع الازرار على الشاشة
في تصوري لو قمت برسم مستطيل صغير فوق كل زر و بعدها قمت بمعالجة حدث الضغط داخل هذا المستطيل تكون قد وصلت الى المطلوب
طبعا بامكانك المعالجة بطرق اخرى
وفقا لتصوري
لنقم بتعريف المتغيرات التالية
PHP كود :
Private rect As Rectangle
Private pen As Pen = Pens.Black
بعدها سنعطي قيم ابتدائية لرسم المستطيل في المكان الصحيح فوق الزر المطلوب مع الحدث الذي نريد التقاطه
PHP كود :
rect = New Rectangle(439, 49, 158, 23)
AddHandler Click, AddressOf Form2_Click
بعدها سنقوم برسم المستطيل مع اقلاع النموذج بتجاوز الطريقة الافتراضية للرسم
PHP كود :
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
e.Graphics.DrawRectangle(pen, rect)
End Sub
الان اصبح لدينا مستطيل فوق الزر المحدد كل ما بقي هو معالجة الحدث المسؤول عن الضغط داخل المستطيل
PHP كود :
Private Sub Form2_Click(sender As Object, e As EventArgs)
Dim cursorPos As Point = Me.PointToClient(Cursor.Position)
If rect.Contains(cursorPos) Then
MessageBox.Show("Button Clicked")
Else
MessageBox.Show("Button Not Clicked")
End If
Invalidate()
End Sub
عليك فقط ايجاد المواضع الصحيحة للازرار على النموذج و حجمها
بالتوفيق اخي
الحل الأفضل إنك تلغي صور الباتون من الصورة الرئيسية و تقوم بتصميم باتون باستخدام الوراثة بحيث يكون له شكل الصورة وتضعه ف الأماكن التي تريدها علي الصورة و تتعامل معه كما تتعامل مع اي باتون عادي
بشكل عام انت لا تحتاج الي الفوتو شوب لتصمم مثل هذا Themes فكل هذا يمكن تصميمه من خلال الكود و سوف يخرج بشكل أفضل
وهذا سوف يعطيك ميزة التجكم في الالوان و تغييرها
اعمل بالفوتو شوب صور صغيرة باسماء القنوات بس
وحطها على ازرار
و رتب الازار الى بالصور مكان الصور الى فى الصورة
(05-09-16, 05:38 PM)ابو ليلى كتب : [ -> ]اخي الكريم ان كنت تريد ان تعمل بطريقة احترافية فيتوجب عليك العمل مع دوال الرسم و معالجة احداث الضغط في اماكن محددة توافق اماكن الازرار
انا افترض ان كل ما على الواجهة هو عبارة عن صورة ثابته
لذا الحل الوحيد هو اضافة حدث في نقاط محددة توافق مواقع الازرار على الشاشة
في تصوري لو قمت برسم مستطيل صغير فوق كل زر و بعدها قمت بمعالجة حدث الضغط داخل هذا المستطيل تكون قد وصلت الى المطلوب
طبعا بامكانك المعالجة بطرق اخرى
وفقا لتصوري
لنقم بتعريف المتغيرات التالية
PHP كود :
Private rect As Rectangle
Private pen As Pen = Pens.Black
بعدها سنعطي قيم ابتدائية لرسم المستطيل في المكان الصحيح فوق الزر المطلوب مع الحدث الذي نريد التقاطه
PHP كود :
rect = New Rectangle(439, 49, 158, 23)
AddHandler Click, AddressOf Form2_Click
بعدها سنقوم برسم المستطيل مع اقلاع النموذج بتجاوز الطريقة الافتراضية للرسم
PHP كود :
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
e.Graphics.DrawRectangle(pen, rect)
End Sub
الان اصبح لدينا مستطيل فوق الزر المحدد كل ما بقي هو معالجة الحدث المسؤول عن الضغط داخل المستطيل
PHP كود :
Private Sub Form2_Click(sender As Object, e As EventArgs)
Dim cursorPos As Point = Me.PointToClient(Cursor.Position)
If rect.Contains(cursorPos) Then
MessageBox.Show("Button Clicked")
Else
MessageBox.Show("Button Not Clicked")
End If
Invalidate()
End Sub
عليك فقط ايجاد المواضع الصحيحة للازرار على النموذج و حجمها
بالتوفيق اخي
طيب اذ كنت اريد ان يكون المستطيل علي hd1 كيف سيكون الكود
(05-09-16, 05:38 PM)ابو ليلى كتب : [ -> ]اخي الكريم ان كنت تريد ان تعمل بطريقة احترافية فيتوجب عليك العمل مع دوال الرسم و معالجة احداث الضغط في اماكن محددة توافق اماكن الازرار
انا افترض ان كل ما على الواجهة هو عبارة عن صورة ثابته
لذا الحل الوحيد هو اضافة حدث في نقاط محددة توافق مواقع الازرار على الشاشة
في تصوري لو قمت برسم مستطيل صغير فوق كل زر و بعدها قمت بمعالجة حدث الضغط داخل هذا المستطيل تكون قد وصلت الى المطلوب
طبعا بامكانك المعالجة بطرق اخرى
وفقا لتصوري
لنقم بتعريف المتغيرات التالية
PHP كود :
Private rect As Rectangle
Private pen As Pen = Pens.Black
بعدها سنعطي قيم ابتدائية لرسم المستطيل في المكان الصحيح فوق الزر المطلوب مع الحدث الذي نريد التقاطه
PHP كود :
rect = New Rectangle(439, 49, 158, 23)
AddHandler Click, AddressOf Form2_Click
بعدها سنقوم برسم المستطيل مع اقلاع النموذج بتجاوز الطريقة الافتراضية للرسم
PHP كود :
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
e.Graphics.DrawRectangle(pen, rect)
End Sub
الان اصبح لدينا مستطيل فوق الزر المحدد كل ما بقي هو معالجة الحدث المسؤول عن الضغط داخل المستطيل
PHP كود :
Private Sub Form2_Click(sender As Object, e As EventArgs)
Dim cursorPos As Point = Me.PointToClient(Cursor.Position)
If rect.Contains(cursorPos) Then
MessageBox.Show("Button Clicked")
Else
MessageBox.Show("Button Not Clicked")
End If
Invalidate()
End Sub
عليك فقط ايجاد المواضع الصحيحة للازرار على النموذج و حجمها
بالتوفيق اخي
طيب اذ كنت اريد ان يكون المستطيل علي hd1 كيف سيكون الكود
الامر بسيط اخي ضع اداة ليبل او مربع نص او زر للتجريب فقط
ضعها فوق الزر الذي تريد بحيث تتناسب مع ابعاده ثم خذ القياسات من الخاصية Location و الخاصية Size
بعد معرفة القياسات تخلص من الاداة