C# WinForms系统渲染器Toolstrip项对按钮控件的悬停效果
如果查看附加的图像,是否有方法从标准WinForms toolstrip的系统渲染器获取此悬停效果的绘图逻辑C# WinForms系统渲染器Toolstrip项对按钮控件的悬停效果,c#,.net,winforms,drawing,toolstrip,C#,.net,Winforms,Drawing,Toolstrip,如果查看附加的图像,是否有方法从标准WinForms toolstrip的系统渲染器获取此悬停效果的绘图逻辑 编辑:无论如何,我已经用图片手动实现了这一点,但是如果有人带着解决方案来到这里,请发布。也许这段代码有帮助。当鼠标在toolstripbutton上时,它会在toolstripbutton周围绘制带有黑色边框的红色圆圈 设置toolstrip属性: //Set render mode to professional myToolStrip.RenderMode = ToolStripR
编辑:无论如何,我已经用图片手动实现了这一点,但是如果有人带着解决方案来到这里,请发布。也许这段代码有帮助。当鼠标在toolstripbutton上时,它会在toolstripbutton周围绘制带有黑色边框的红色圆圈 设置toolstrip属性:
//Set render mode to professional
myToolStrip.RenderMode = ToolStripRenderMode.Professional;
//Assign new instance of your custom renderer
myToolStrip.Renderer = new MyCustomRenderer();
自定义渲染器类:
public class MyCustomRenderer : ToolStripProfessionalRenderer
{
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
{
if (!e.Item.Selected)
base.OnRenderButtonBackground(e);
else
{
Rectangle rectangle = new Rectangle(0, 0, e.Item.Size.Width - 1, e.Item.Size.Height - 1);
//Draw red circle
e.Graphics.FillEllipse(Brushes.Red, rectangle);
//Draw black border
e.Graphics.DrawEllipse(Pens.Black, rectangle);
}
}
}
“绘画逻辑”?你是什么意思?悬停效果,鼠标悬停的玻璃风格。这不仅仅是一个画在上面的图像,它是GDI+代码,用于在系统渲染器的某个地方画在下面。我想谢谢你的回答,但我对基本绘图没有问题,我只是不想重新创建整个效果,如果有办法从WinForms获得它的话。另外,我想对按钮控件使用效果,而不是在toolstripOk中,我可能误解了这个问题。所以你想在System.Windows.Forms.Button控件上使用这种效果(如图所示)?是的,因为我看不到“提取”这种效果的方法,所以我只是创建了一个按钮子类,可以应用滚动/推送图像,但当我有不同大小的按钮(每个按钮的图像不同)时,我会遇到问题你能展示一下你是怎么做到的吗?我对此很感兴趣:)你的按钮FlatStyle=正常状态下的无边框平面?@Denis你想手动实现这个效果吗?您不能使用已经支持此效果的第三方控件吗?