إنشاء فورم على شكل صورة PNG - ZoRRo - 14-01-22
السلام عليكم ورحمة الله وبركاته
أخوتي المبرمجين الأعزاء أود المساعدة في مشكلة لم أستطع حلّها وهي,
جعل الفورم يأخذ نفس شكل الصورة , هذا مثال على كلامي
RE: إنشاء فورم على شكل صورة PNG - aljzazy - 14-01-22
ضع خلفية الفورم صورة واجعل خاصية الصورة strech
RE: إنشاء فورم على شكل صورة PNG - ابراهيم ايبو - 14-01-22
السلام عليكم ورحمة الله وبركاته
اخي الكريم
1 -انشئ فورم واجعل الخاصية FormBorderStyle =none
2 -في الخاصية BackgroundImage اختر الصورة التي تريد ويجب ان تكون خلفية الصورة بلون مصمت (اي لون واحد غير متدرج ولايكون هذا اللون داخل الصورة نفسها لانه هوالذي سيتم جعله شفافا وبذلك يأخذ الفورم شكل الصورة)
3 - الخاصية التي اسفلها مباشرة BackgroundImageLayuot اختر منها Stretch
4 - الان الخاصية TransparencyKey هنا ستضع فيها قيمة لون الخلفية التي ستكون شفافة وبذلك سيتم قص الفورم علىشطل الصورة الداخلي
يمكنك التجربة بدون صورة اعمل الاتي :
FormBorderStyle =none
Backcolor=White
ضع بانل وسط الفورم لونه احمر اصغر من الفورم
الان TransparencyKey=White
شغل الفورم ستجد ان الفورم اخذت شكل البانل واختفى كل ماحولها من لون ابيض
RE: إنشاء فورم على شكل صورة PNG - ZoRRo - 14-01-22
لكن ماراح أقدر أحرك الفورم يا أستاذ
RE: إنشاء فورم على شكل صورة PNG - ابراهيم ايبو - 14-01-22
السلام عليكم ورحمة الله وبركاته
اخي الكريم لو تلاحظ توقيعي
(البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات)
الان انت وضعت صورة في خلفية الفورم قم باضافة Panel اعلى وسط الصورة بشكل مستطيل يشبه شريط عنوان الفورم
واجعل لون الخلفية له Transparent حتى لايظهر (هو موجود فوق الصورة )
الان اكتب له هذا الكود
كود :
Dim a As Integer
Dim b As Integer
Private Sub planel1_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel1.MouseDown
a = Panel.MousePosition.X - Me.Location.X
b = Panel.MousePosition.Y - Me.Location.Y
End Sub
Private Sub panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
Dim newPoint As New System.Drawing.Point()
If e.Button = MouseButtons.Left Then
newPoint = Panel.MousePosition
newPoint.X = newPoint.X - (a)
newPoint.Y = newPoint.Y - (b)
Me.Location = newPoint
End If
End Sub
او يمكتك تجريب هذا الكود على الفورم نفسها
كود :
Dim x, y As Integer
Dim newpoint As New Point
Private Sub Form1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
x = Control.MousePosition.X - Me.Location.X
y = Control.MousePosition.Y - Me.Location.Y
End Sub
Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
'في الماوس موف للفورم نكتب الكود التالي
If e.Button = Windows.Forms.MouseButtons.Left Then
newpoint = Control.MousePosition
newpoint.X -= x
newpoint.Y -= y
Me.Location = newpoint
Application.DoEvents()
End If
End Sub
RE: إنشاء فورم على شكل صورة PNG - asmarsou - 14-01-22
(14-01-22, 11:48 PM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اخي الكريم لو تلاحظ توقيعي
(البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات)
الان انت وضعت صورة في خلفية الفورم قم باضافة Panel اعلى وسط الصورة بشكل مستطيل يشبه شريط عنوان الفورم
واجعل لون الخلفية له Transparent حتى لايظهر (هو موجود فوق الصورة )
الان اكتب له هذا الكود
كود :
Dim a As Integer
Dim b As Integer
Private Sub planel1_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel1.MouseDown
a = Panel.MousePosition.X - Me.Location.X
b = Panel.MousePosition.Y - Me.Location.Y
End Sub
Private Sub panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
Dim newPoint As New System.Drawing.Point()
If e.Button = MouseButtons.Left Then
newPoint = Panel.MousePosition
newPoint.X = newPoint.X - (a)
newPoint.Y = newPoint.Y - (b)
Me.Location = newPoint
End If
End Sub
وهذه طريقة اخرى فقط غير المسميات (اسم البانل).... يتضمنها حدث رفع الماوس من على البنل
كود :
Private MouseOffset As Point
Private IsLeftButtonDown As Boolean = False
Private Sub PlayerPanel_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PlayerPanel.MouseDown
If e.Button = MouseButtons.Left Then
IsLeftButtonDown = False
End If
Dim xOffset As Integer
Dim yOffset As Integer
If e.Button = MouseButtons.Left Then
xOffset = -e.X - SystemInformation.FrameBorderSize.Width
yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height
MouseOffset = New Point(xOffset, yOffset)
IsLeftButtonDown = True
End If
End Sub
Private Sub PlayerPanel_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PlayerPanel.MouseMove
If IsLeftButtonDown Then
Dim MousePosition As Point = Control.MousePosition
MousePosition.Offset(MouseOffset.X, MouseOffset.Y)
Location = MousePosition - PlayerPanel.Location
End If
End Sub
Private Sub PlayerPanel_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PlayerPanel.MouseUp
If e.Button = MouseButtons.Left Then
IsLeftButtonDown = False
End If
End Sub
RE: إنشاء فورم على شكل صورة PNG - ابراهيم ايبو - 15-01-22
السلام عليكم ورحمة الله وبركاته
تعجبني المشاركات جدا جدا
لأنها تنم عن التفاعل الإيجابي في هذا المنتدى الرائع
شكرا لك أخي asmarsou
RE: إنشاء فورم على شكل صورة PNG - asmarsou - 15-01-22
(15-01-22, 12:11 AM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
تعجبني المشاركات جدا جدا
لأنها تنم عن التفاعل الإيجابي في هذا المنتدى الرائع
شكرا لك أخي asmarsou
العفو استاذ ... فخيركم من تعلم علما و علمه
RE: إنشاء فورم على شكل صورة PNG - ZoRRo - 15-01-22
شكرا أستاذ إبراهيم ,,
لكني وجد حل أسهل
نعرف المتغيران كالتالي
كود :
Private Property MoveForm As Boolean
Private Property MoveForm_MousePos As Point
ثم نضع الكود التالي في الإفنت التالية
كود :
Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown
If e.Button = MouseButtons.Left Then
MoveForm = True
Me.Cursor = Cursors.Hand
MoveForm_MousePos = e.Location
End If
End Sub
Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
If MoveForm Then
Me.Location = Me.Location + (e.Location - MoveForm_MousePos)
End If
End Sub
Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp
If e.Button = MouseButtons.Left Then
MoveForm = False
Me.Cursor = Cursors.Default
End If
End Sub
أحببت المشاركة للفائدة
|