ɨһɨ
·ÖÏíÎÄÕµ½Î¢ÐÅ
ɨһɨ
¹Ø×¢¹Ù·½¹«ÖÚºÅ
ÖÁ¶¥Í·Ìõ
Private Sub MenuItem2_DrawItem ( ByVal sender As Object , ByVal e As System.Windows.Forms.DrawItemEventArgs ) Handles MenuItem2.DrawItem
¡¡Dim rfBound As RectangleF = New RectangleF ( e.Bounds.X , e.Bounds.Y , e.Bounds.Width - 1 , e.Bounds.Height )
¡¡'¸ù¾ÝDrawItemEventArgs²ÎÊý»ñµÃ²Ëµ¥Ïî¾ØÐÎÇøÓò²¢´æ´¢µ½RectangleFÀàÐÍʵÀýÖÐ
¡¡Dim rfBound1 As Rectangle = New Rectangle ( e.Bounds.X , e.Bounds.Y , e.Bounds.Width - 1 , e.Bounds.Height )
¡¡'¸ù¾ÝDrawItemEventArgs²ÎÊý»ñµÃ²Ëµ¥Ïî¾ØÐÎÇøÓò²¢´æ´¢µ½RectangleÀàÐÍʵÀýÖÐ
¡¡'RectangleÀàÐÍʵÀýºÍRectangleFÀàÐÍʵÀý²î²»¶à£¬µ«ÔÚºóÃæ´úÂëÖлæÖƲ˵¥µÄº¯ÊýÊÇÓÐÇø±ðµÄ
¡¡e.Graphics.FillRectangle ( New SolidBrush ( Color.LightGray ) , rfBound )
¡¡Dim s As MenuItem = CType ( sender , MenuItem )
¡¡Dim s1 As String = s.Text
¡¡'»ñµÃ²Ëµ¥Ïî¶ÔÓ¦µÄÎı¾Ãû³Æ
¡¡Dim sfTemp As StringFormat = New StringFormat ( )
¡¡sfTemp.Alignment = StringAlignment.Center
¡¡'É趨Îı¾ÔÚ¾ØÐÎÇøÓòµÄ¶ÔÆë·½Ê½
¡¡sfTemp.LineAlignment = StringAlignment.Center
¡¡Dim rcText As RectangleF = rfBound
¡¡rcText.Width -= 5
¡¡e.Graphics.DrawString ( s1 , New Font ( "ËÎÌå" , 10 ) , New SolidBrush ( Color.Blue ) , rcText , sfTemp )
¡¡e.Graphics.DrawRectangle ( New Pen ( New SolidBrush ( Color.LightGray ) ) , rfBound1 )
¡¡If e.State = ( DrawItemState.NoAccelerator Or DrawItemState.Selected ) Then
¡¡¡¡e.Graphics.FillRectangle ( New SolidBrush ( Color.LightYellow ) , rfBound )
¡¡¡¡e.Graphics.DrawString ( s1 , New Font ( "ËÎÌå" , 10 , FontStyle.Bold Or FontStyle.Underline ) , New SolidBrush ( Color.Red ) , rcText , sfTemp )
¡¡¡¡e.Graphics.DrawRectangle ( New Pen ( New SolidBrush ( Color.Black ) ) , rfBound1 )
¡¡¡¡e.DrawFocusRectangle ( )
¡¡End If
End Sub
¡¡¡¡2. MenuItem2µÄDrawItemʼþ´¦Àí´úÂëÖ®ºóÌí¼ÓÏÂÁдúÂ룬ÏÂÁдúÂëÊǶ¨ÒåMenuItem2µÄMeasureItemʼþ£¬ÔÚ´ËʼþÖÐʵÏÖÉ趨"н¨"²Ëµ¥ÏîµÄ³¤¶ÈºÍ¸ß¶È£º
Private Sub MenuItem2_MeasureItem ( ByVal sender As Object , ByVal e As System.Windows.Forms.MeasureItemEventArgs ) Handles MenuItem2.MeasureItem
¡¡e.ItemWidth = 60
¡¡'É趨²Ëµ¥ÏîµÄ¿í¶È
¡¡e.ItemHeight = 30
¡¡'É趨²Ëµ¥ÏîµÄ¸ß¶È
End Sub
¡¡¡¡3. ÔÚÍê³ÉÉÏÊö²Ù×÷²½Öèºó£¬ÔÙÔÚMenuItem2µÄMeasureItemʼþ´¦Àí³ÌÐòÖ®ºóÌí¼ÓÏÂÁдúÂ룬ÏÂÁдúÂëÊǶ¨ÒåMenuItem3µÄDrawItemʼþ£¬Æä¹¦ÄÜÊǶÔ"´ò¿ª"²Ëµ¥ÏîÖØÐ»æÖÆ£º
Private Sub MenuItem3_DrawItem ( ByVal sender As Object , ByVal e As System.Windows.Forms.DrawItemEventArgs ) Handles MenuItem3.DrawItem
¡¡Dim rfBound As RectangleF = New RectangleF ( e.Bounds.X , e.Bounds.Y , e.Bounds.Width - 1 , e.Bounds.Height )
¡¡'¸ù¾ÝDrawItemEventArgs²ÎÊý»ñµÃ²Ëµ¥Ïî¾ØÐÎÇøÓò²¢´æ´¢µ½RectangleFÀàÐÍʵÀýÖÐ
¡¡Dim rfBound1 As Rectangle = New Rectangle ( e.Bounds.X , e.Bounds.Y , e.Bounds.Width - 1 , e.Bounds.Height )
¡¡'¸ù¾ÝDrawItemEventArgs²ÎÊý»ñµÃ²Ëµ¥Ïî¾ØÐÎÇøÓò²¢´æ´¢µ½RectangleÀàÐÍʵÀýÖÐ
¡¡'RectangleÀàÐÍʵÀýºÍRectangleFÀàÐÍʵÀý²î²»¶à£¬µ«ÔÚºóÃæ´úÂëÖлæÖƲ˵¥µÄº¯ÊýÊÇÓÐÇø±ðµÄ
¡¡Dim s As MenuItem = CType ( sender , MenuItem )
¡¡Dim s1 As String = s.Text
¡¡Dim sfTemp As StringFormat = New StringFormat ( )
¡¡sfTemp.Alignment = StringAlignment.Center
¡¡sfTemp.LineAlignment = StringAlignment.Center
¡¡Dim rcText As RectangleF = rfBound
¡¡rcText.Width -= 5
¡¡e.Graphics.DrawString ( s1 , New Font ( "Veranda" , 10 ) , New SolidBrush ( Color.Blue ) , rcText , sfTemp )
¡¡e.Graphics.DrawRectangle ( New Pen ( New SolidBrush ( Color.LightGray ) ) , rfBound1 )
¡¡If e.State = ( DrawItemState.NoAccelerator Or DrawItemState.Selected ) Then
¡¡¡¡e.Graphics.FillRectangle ( New SolidBrush ( Color.LightYellow ) , rfBound )
¡¡¡¡e.Graphics.DrawString ( s1 , New Font ( "Veranda" , 10 , FontStyle.Bold Or FontStyle.Underline ) , New SolidBrush ( Color.Red ) , rcText , sfTemp )
¡¡¡¡e.Graphics.DrawRectangle ( New Pen ( New SolidBrush ( Color.Black ) ) , rfBound1 )
¡¡¡¡e.DrawFocusRectangle ( )
¡¡End If
End Sub
¡¡¡¡4. MenuItem3µÄDrawItemʼþ´¦Àí´úÂëÖ®ºóÌí¼ÓÏÂÁдúÂ룬ÏÂÁдúÂëÊǶ¨ÒåMenuItem3µÄMeasureItemʼþ£¬ÔÚ´ËʼþÖÐʵÏÖÉ趨"н¨"²Ëµ¥ÏîµÄ³¤¶ÈºÍ¸ß¶È£º
Private Sub MenuItem3_MeasureItem ( ByVal sender As Object , ByVal e As System.Windows.Forms.MeasureItemEventArgs ) Handles MenuItem3.MeasureItem
¡¡e.ItemWidth = 60
¡¡'É趨²Ëµ¥ÏîµÄ¿í¶È
¡¡e.ItemHeight = 30
¡¡'É趨²Ëµ¥ÏîµÄ¸ß¶È
End Sub
¡¡¡¡ÔÚÉÏÊö²½Öè¶¼ÕýÈ·Íê³Éºó£¬±¾ÎĽéÉܵÄÊÖ¹¤»æÖƲ˵¥¾ÍÍê³É£¬´Ëʱµ¥»÷¿ì½Ý¼üF5ÔËÐС£
¡¡¡¡³ÌÐò¾Í¿ÉÒԵõ½Í¼05ËùʾµÄÔËÐнçÃæ¡£
¡¡¡¡ËÄ£®×ܽ᣺
¡¡¡¡Visual Basic .netÖÐʵÏÖ»æÖƲ˵¥×îÖØÒªµÄÊÇÕÆÎÕDrawItemʼþºÍMeasureItemʼþÓ÷¨¼°Æä»æÖƲ˵¥Ê±ËùҪʹÓõ½µÄ¸÷ÖÖͼÐÎͼÏó·½·¨£¬È磺»æÖÆÃû³Æ£¬É«²ÊÌî³äµÈ¡£µ±È»ÔÚ»æÖƲ˵¥Ê±£¬Ê×ÏȰѲ˵¥ÏîµÄ"OwnerDraw"ÊôÐÔÉ趨Ϊ"True"¡£ÒòΪÕâÊÇ´¥·¢DrawItemʼþºÍMeasureItemʼþµÄǰÌá¡£±¾ÎÄʵÏֵIJ˵¥Ëä²»ÃÀ¹Û£¬µ«±¾ÎĽéÉܵķ½·¨È´ÊǺÜʵÓõģ¬ÔÚÉÏÊöÏîÄ¿µÄ»ù´¡ÉϽøÐÐÒ»¶¨µÄÐ޸ģ¬ÈçÔÙµ÷ÓÃÆäËûµÄ»æÖÆ·½·¨£¬Ò»¶¨¿ÉÒÔÍê³ÉÒ»¸ö¸üÃÀ¹ÛµÄ²Ëµ¥À´¡£