gpt4 book ai didi

.net - 覆盖 OnRenderButtonBackground 时如何确定鼠标是否位于 ToolStripButton 上方

转载 作者:行者123 更新时间:2023-12-04 05:48:45 40 4
gpt4 key购买 nike

我正在覆盖 OnRenderButtonBackground方法以使用自定义着色,但我想知道鼠标当前是否在按钮上。

我试图获取父控件(工具条)和父窗体并将所有坐标添加在一起,但这不正确:

Private Class MyRenderer
Inherits ToolStripProfessionalRenderer
Protected Overrides Sub OnRenderButtonBackground(e As ToolStripItemRenderEventArgs)
Dim btn = TryCast(e.Item, ToolStripButton)
If Not btn Is Nothing AndAlso btn.Checked Then

Dim bounds As New Rectangle(Point.Empty, e.Item.Size)
Dim ts As ToolStrip = e.Item.GetCurrentParent
Dim f As Form = CType(e.Item.GetCurrentParent.GetContainerControl, Form)
Dim btnRect As New Rectangle(f.Location.X + ts.Location.X + e.Item.Bounds.X, f.Location.Y + ts.Location.Y + e.Item.Bounds.Y, e.Item.Bounds.Width, e.Item.Bounds.Height)

If btnRect.Contains(MousePosition) Then
'doesn't reach this path...
e.Graphics.FillRectangle(New SolidBrush(Color.Blue), bounds)
Else
e.Graphics.FillRectangle(New SolidBrush(Color.Red), bounds)
End If
Else
MyBase.OnRenderButtonBackground(e)
End If
End Sub
End Class

我确定必须有一种更简单的方法来做到这一点?

最佳答案

我认为您不需要使用 MousePosition为了这。

试试这个:

If e.Item.Selected Then
e.Graphics.FillRectangle(Brushes.Blue, bounds)
Else
e.Graphics.FillRectangle(Brushes.Red, bounds)
End If

注意:您不是在处理画笔。尝试处理它们或使用 SystemBrushes 作为示例。

关于.net - 覆盖 OnRenderButtonBackground 时如何确定鼠标是否位于 ToolStripButton 上方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352069/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com