Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinForms系统渲染器Toolstrip项对按钮控件的悬停效果_C#_.net_Winforms_Drawing_Toolstrip - Fatal编程技术网

C# 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

如果查看附加的图像,是否有方法从标准WinForms toolstrip的系统渲染器获取此悬停效果的绘图逻辑


编辑:无论如何,我已经用图片手动实现了这一点,但是如果有人带着解决方案来到这里,请发布。

也许这段代码有帮助。当鼠标在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你想手动实现这个效果吗?您不能使用已经支持此效果的第三方控件吗?