¿Æ¼¼ÐÐÕß

ÐÐÕßѧԺ תÐÍ˽¶­»á ¿Æ¼¼ÐÐÕßרÌⱨµÀ Íøºì´óÕ½¿Æ¼¼ÐÐÕß

֪ʶ¿â

֪ʶ¿â °²È«µ¼º½

ÖÁ¶¥ÍøÈí¼þƵµÀ»ù´¡Èí¼þVisual Basic .Net´òÔì¸öÐÔ»¯²Ëµ¥ 2

Visual Basic .Net´òÔì¸öÐÔ»¯²Ëµ¥ 2

  • ɨһɨ
    ·ÖÏíÎÄÕµ½Î¢ÐÅ

  • ɨһɨ
    ¹Ø×¢¹Ù·½¹«ÖÚºÅ
    ÖÁ¶¥Í·Ìõ

ÔÚForm1.VBÖеÄMenuItem1µÄMeasureItemʼþ´¦Àí³ÌÐòÖ®ºóÌí¼ÓÏÂÁдúÂ룬ÏÂÁдúÂëÊǶ¨ÒåMenuItem2µÄDrawItemʼþ£¬Æ书ÄÜÊǶÔ"н¨"²Ëµ¥ÏîÖØлæÖÆ£º

×÷ÕߣºØýÃû À´Ô´£ºÖйúITʵÑéÊÒ 2008Äê6ÔÂ8ÈÕ

¹Ø¼ü×Ö£º ²Ëµ¥ ¸öÐÔ»¯ VB vb.net Windows

  • ÆÀÂÛ
  • ·ÖÏí΢²©
  • ·ÖÏíÓʼþ
¡¡1. ÔÚForm1.VBÖеÄMenuItem1µÄMeasureItemʼþ´¦Àí³ÌÐòÖ®ºóÌí¼ÓÏÂÁдúÂ룬ÏÂÁдúÂëÊǶ¨ÒåMenuItem2µÄDrawItemʼþ£¬Æ书ÄÜÊǶÔ"н¨"²Ëµ¥ÏîÖØлæÖÆ£º

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˵¥Ëä²»ÃÀ¹Û£¬µ«±¾ÎĽéÉܵķ½·¨È´ÊǺÜʵÓõģ¬ÔÚÉÏÊöÏîÄ¿µÄ»ù´¡ÉϽøÐÐÒ»¶¨µÄÐ޸ģ¬ÈçÔÙµ÷ÓÃÆäËûµÄ»æÖÆ·½·¨£¬Ò»¶¨¿ÉÒÔÍê³ÉÒ»¸ö¸üÃÀ¹ÛµÄ²Ëµ¥À´¡£


    • ÆÀÂÛ
    • ·ÖÏí΢²©
    • ·ÖÏíÓʼþ