05-10-12, 03:11 PM
كاتب الموضوع : silverlight
الموضوع: كيف تجعل كل شئ مستديرا داخل الفورماعداد : مهندس عمر امين ابراهيم
الهدف : للمبتدئين فقط
الاخوه الكرام
من متابعتي للموقع وجدت ان الكثير من الاخوه يريدون أن يغيرون شكل الباتون ليكون دائريا
الحقيقه نستطيع تغيير الكثير من الكونترول Controls ونجعلها علي شكل دائره وذلك مع الحفاظ علي الخواص الاخري وبدون استخدام اكواد تم تصميمها بواسطة مبرمجين اخرين
عموما كل هذا يتم باستخدام +GDI
كل ذلك يتم عن طريق الحدث Paint او Overrides Paint
مثال : تغيير شكل الفورم الي دائره
كل ما عليك فعله هو ان تجعل الفورم له ابعاد متساويه
وتستخدم الكود الاتي
كود :
Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim shape As New System.Drawing.Drawing2D.GraphicsPath
shape.AddEllipse(0, 0, Me.Width, Me.Height)
Me.Region = New System.Drawing.Region(shape)
End Sub
ايضا نجعل الباتون size متساوي اي نغيير في Properties وتحديدا في Size ونجعل القيميتن متساويتين عمومل لو لم نجعل القيميتين متساويتين سنحصل علي شكل بيضاوي
وهذا الامر ينطبقي علي الفورم وباق الاشياء الاخري
كود :
Private Sub Button1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Button1.Paint
Dim shape As New System.Drawing.Drawing2D.GraphicsPath
shape.AddEllipse(0, 0, Button1.Width, Button1.Height)
Button1.Region = New System.Drawing.Region(shape)
End Sub
كود :
Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
Dim shape As New System.Drawing.Drawing2D.GraphicsPath
shape.AddEllipse(0, 0, Panel1.Width, Panel1.Height)
Panel1.Region = New System.Drawing.Region(shape)
End Sub
كود :
Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Dim shape As New System.Drawing.Drawing2D.GraphicsPath
shape.AddEllipse(0, 0, PictureBox1.Width, PictureBox1.Height)
PictureBox1.Region = New System.Drawing.Region(shape)
End Sub
كود :
Private Sub DataGridView1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGridView1.Paint
Dim shape As New System.Drawing.Drawing2D.GraphicsPath
shape.AddEllipse(0, 0, DataGridView1.Width, DataGridView1.Height)
DataGridView1.Region = New System.Drawing.Region(shape)
End Sub
lمثال اخر: حتي SplitContainer
كود :
Private Sub SplitContainer1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles SplitContainer1.Paint
Dim shape As New System.Drawing.Drawing2D.GraphicsPath
shape.AddEllipse(0, 0, SplitContainer1.Width, SplitContainer1.Height)
SplitContainer1.Region = New System.Drawing.Region(shape)
End Sub
ملحوظه اخيره: يمكن تغيير الشكل الي اي شئ تريد مثل نجمه او حتي زجاجه او اي شكل قد تتخيله الأمر متروك لخيالك
لكن يتبقي السؤال هل نحن في حاجه لتغيير اشكال الكونترول المختلفه؟
ربما نحتاج ذلك مع البعض او ربما نحتاجه مع كل شئ مين يقدر يعرف
عموما اتمني ان الموضوع يكون واضح
مرفق الكود باستخدام Visual Studio 2008
اخوكم عمر