【问题标题】:Resizing ToolStrip item's image调整 ToolStrip 项目图像的大小
【发布时间】:2015-11-04 09:39:38
【问题描述】:

有什么方法可以调整/调整 ToolStrip 项目的图像大小?我已经设置了属性 AutoSize = FalseImageScaling = SizeToFitSize = 40, 40 但只有项目的框调整大小(在图像周围留出空格)并且图像大小仍然是默认大小。

然后我想出了使用 BackgroundImage 插入图像,而不是在 Image 中插入它。我可以调整/调整图像大小,但问题是当我运行系统并将光标指向 ToolStrip 项目时,项目的图像消失了。我找到了这个解决方案Resizing ToolStripButtons to fit complete BackGround image,但我不知道如何使用vb.net 应用它

请帮助我。谢谢。

【问题讨论】:

  • 您不需要使用BackGroundImage 属性。只需使用Image 和使用ToolStripItemImageScaling 属性和ToolStripImageScalingSize 来控制项目的大小,就像我在答案中所做的那样。

标签: vb.net image winforms toolstripbutton


【解决方案1】:

如果您希望图片以原始尺寸显示

  • ToolStripAutoSize 属性设置为true
  • ToolStripItemImageScaling 属性设置为None

如果您希望图片以特定尺寸显示

  • ToolStripAutoSize 属性设置为true
  • ToolStripImageScalingSize 属性设置为您的特定大小,例如32,32
  • ToolStripItemImageScaling属性设置为SizeToFit

【讨论】:

  • 是的,这就是我正在寻找的答案。非常感谢:)
【解决方案2】:

希望这会有所帮助

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

【讨论】:

  • 一个好的答案会稍微详细说明一段未注释的代码将如何提供帮助
  • 您的编码工作得很好。谢谢你帮我把它翻译成vb。我会为你投票:)
猜你喜欢
  • 2013-02-07
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多