19-11-13, 06:40 PM
السلام عليكم ورحمة الله وبركاته
تفضل أخي
تفضل أخي
كود :
'تعريف حدث الدخول لجميع عناصر القائمة المنبثقة
Private Sub ToolStripMenuItems_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles _
ToolStripMenuItem2.MouseEnter, ToolStripMenuItem3.MouseEnter, ToolStripMenuItem4.MouseEnter, ToolStripMenuItem5.MouseEnter
'معرفة العنصر الذي تسبب في إطلاق الحدث
Dim Item As ToolStripItem = DirectCast(sender, ToolStripItem)
'تعريف كائن رسومي لغرض الرسم عليه
Dim Graph As Graphics = ToolStripMenuItem1.DropDown.CreateGraphics
'تعريف مستطيل وتحديد حجمه ليلائم حجم العنصر
Dim Rect1 As New Rectangle(Item.Bounds.X + 3, Item.Bounds.Y + 1, Item.Bounds.Width - 5, Item.Bounds.Height - 2)
'معرفة حجم النص الذي سيتم كتابته فوق المستطيل المرسوم
'سبب هذه الخطوة أن المستطيل سيرسم فوق النص وبالتالي لن يظهر
'النص فنعيد كتابته
Dim TextSize As Size = System.Windows.Forms.TextRenderer.MeasureText(Item.Text, Item.Font)
'تحديد مكان رسم النص
Dim Point1 As New PointF(3 + Math.Floor((Rect1.Width - TextSize.Width) / 2), Rect1.Y + Math.Floor((Rect1.Height - TextSize.Height) / 2) - 0)
'رسم المستطيل
Graph.FillRectangle(Brushes.AliceBlue, Rect1)
'رسم الأيقونة حيث أن المستطيل سيمسحها أيضا
If Item.Image IsNot Nothing Then Graph.DrawImage(Item.Image, CSng(Rect1.Y + Math.Floor((Rect1.Height - TextSize.Height) / 2) - 1), CSng(Rect1.Y + Math.Floor((Rect1.Height - TextSize.Height) / 2) - 1))
'كتابة النص
Graph.DrawString(Item.Text, Item.Font, New SolidBrush(Item.ForeColor), Point1)
End Sub
