在toolStripMenuItem周围绘制一个矩形

时间:2014-03-18 16:57:59

标签: c# graphics toolstripitem

我知道我可以使用

在任何我想要的地方绘制矩形
using (Graphics G = myControl.CreateGraphics())
{
    G.DrawRectangle(new Pen(myColor),myControl.Bounds);
}

但是我无法通过toolStripMenuItem找出如何执行此操作,因此我可以在其周围绘制一个矩形。

感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

最简单的方法是从控件继承并覆盖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。

enter image description here

(图片取自VBForums

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

虽然 ToolStripMenuItem 不是控件,但它的父控件是。因此你可以调用

myToolStripMenuItem.GetCurrentParent().CreateGraphics()