调整 ToolStrip 项目的图像
Resizing ToolStrip item's image
有什么方法可以 fit/resize ToolStrip 项目的图像吗?我已经设置了 属性 AutoSize = False
, ImageScaling = SizeToFit
& Size = 40, 40
但只有项目的框调整大小(在图像周围留出空格)并且图像大小仍然是默认大小。
然后我想出了使用 BackgroundImage 插入图像而不是在 Image 中插入图像。我可以 fit/resize 图像,但问题是当我 运行 我的系统并将光标指向 ToolStrip 项目时,该项目的图像消失了。我找到了这个解决方案 Resizing ToolStripButtons to fit complete BackGround image 但我不知道如何使用 vb.net
应用它
好心帮助我。谢谢。
希望这会有所帮助
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
如果您希望图片以原始大小显示
- 将
ToolStrip
的 AutoSize
属性 设置为 true
- 将
ToolStripItem
的 ImageScaling
属性 设置为 None
如果您希望图片以特定尺寸显示
- 将
ToolStrip
的 AutoSize
属性 设置为 true
- 将
ToolStrip
的 ImageScalingSize
属性 设置为您的特定尺寸,例如 32,32
- 将
ToolStripItem
的 ImageScaling
属性 设置为 SizeToFit
有什么方法可以 fit/resize ToolStrip 项目的图像吗?我已经设置了 属性 AutoSize = False
, ImageScaling = SizeToFit
& Size = 40, 40
但只有项目的框调整大小(在图像周围留出空格)并且图像大小仍然是默认大小。
然后我想出了使用 BackgroundImage 插入图像而不是在 Image 中插入图像。我可以 fit/resize 图像,但问题是当我 运行 我的系统并将光标指向 ToolStrip 项目时,该项目的图像消失了。我找到了这个解决方案 Resizing ToolStripButtons to fit complete BackGround image 但我不知道如何使用 vb.net
好心帮助我。谢谢。
希望这会有所帮助
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
如果您希望图片以原始大小显示
- 将
ToolStrip
的AutoSize
属性 设置为true
- 将
ToolStripItem
的ImageScaling
属性 设置为None
如果您希望图片以特定尺寸显示
- 将
ToolStrip
的AutoSize
属性 设置为true
- 将
ToolStrip
的ImageScalingSize
属性 设置为您的特定尺寸,例如32,32
- 将
ToolStripItem
的ImageScaling
属性 设置为SizeToFit