繁体   English   中英

在 toolStripMenuItem 周围绘制一个矩形

[英]Drawing a rectangle around a toolStripMenuItem

我知道我可以在任何我想要使用的地方绘制矩形

using (Graphics G = myControl.CreateGraphics())
{
    G.DrawRectangle(new Pen(myColor),myControl.Bounds);
}

但我无法弄清楚如何使用 toolStripMenuItem 执行此操作,以便我可以在它周围绘制一个矩形。

任何帮助表示赞赏。 谢谢!

最简单的方法是从控件继承并覆盖OnPaint方法,然后将ToolStripMenuItem所有实例更改为MyToolStripMenuItem

class MyToolStripMenuItem : ToolStripMenuItem
{
    protected override void OnPaint( PaintEventargs pe )
    {
        base.OnPaint( pe );

        pe.ClipRectangle.Inflate( -1, -1 );
        pe.Graphics.DrawRectangle( Pens.Black, pe.ClipRectangle );
    }
}

稍微复杂一点,但从长远来看可维护性更好,是实现自定义ToolStripRenderer ,它允许您更改整个事物的外观,例如使其看起来像 VS2010。

在此处输入图片说明

(图片取自VBForums

您可以尝试使用 Paint 事件(您应该很少使用 CreateGraphics)和 ContentRectangle 属性:

void toolStripButton1_Paint(object sender, PaintEventArgs e) {
  e.Graphics.DrawRectangle(Pens.Red, toolStripButton1.ContentRectangle);
}

虽然ToolStripMenuItem不是控件,但它的父项是。 因此你可以打电话

myToolStripMenuItem.GetCurrentParent().CreateGraphics()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM