winforms 正在调整ToolStrip项图像的大小

ehxuflar  于 2023-01-17  发布在  其他
关注(0)|答案(2)|浏览(204)

是否有任何方法可以调整ToolStrip项的图像大小?我已经设置了属性AutoSize = FalseImageScaling = SizeToFit & Size = 40, 40,但仅调整了该项的框大小(在图像周围留出空间),并且图像大小仍为默认大小。
然后我想到了使用BackgroundImage插入图像,而不是在Image处插入。我可以调整图像大小,但问题是当我运行系统并将光标指向ToolStrip项时,该项的图像消失了。我找到了Resizing ToolStripButtons to fit complete BackGround image解决方案,但不知道如何使用vb.net应用它
帮帮我。谢谢。

ejk8hzay

ejk8hzay1#

如果要以原始大小显示图像

  • ToolStripAutoSize属性设置为true
  • ToolStripItemImageScaling属性设置为None
    如果要以特定大小显示图像
  • ToolStripAutoSize属性设置为true
  • ToolStripImageScalingSize属性设置为您的特定大小,例如32,32
  • ToolStripItemImageScaling属性设置为SizeToFit
ukxgm1gy

ukxgm1gy2#

希望这能有所帮助

Partial Public Class Form1
    Inherits Form
    Public Sub New()
        InitializeComponent()
        'using new render instead of def render
        toolStrip1.Renderer = New MyRenderer()
    End Sub
    Private Class MyRenderer
        'apply everything of default render
        Inherits ToolStripProfessionalRenderer

        'this will override the Render Butoon Bg event
        Protected Overrides Sub OnRenderButtonBackground(e As ToolStripItemRenderEventArgs)
            'if image is nothing then use the def render
            If e.Item.BackgroundImage Is Nothing Then
                MyBase.OnRenderButtonBackground(e)
            Else

                'redraw the image to fit the area
                Dim bounds As New Rectangle(Point.Empty, e.Item.Size)
                e.Graphics.DrawImage(e.Item.BackgroundImage, bounds)
                ' Something...
                If e.Item.Pressed Then
                    ' Something...
                ElseIf e.Item.Selected Then
                End If

                'draw the fit button here
                Using pen As New Pen(Color.Black)
                    e.Graphics.DrawRectangle(pen, bounds.X, bounds.Y, bounds.Width - 1, bounds.Height - 1)
                End Using
            End If
        End Sub
    End Class
End Class

相关问题