我知道我可以使用
在任何我想要的地方绘制矩形using (Graphics G = myControl.CreateGraphics())
{
G.DrawRectangle(new Pen(myColor),myControl.Bounds);
}
但是我无法通过toolStripMenuItem找出如何执行此操作,因此我可以在其周围绘制一个矩形。
感谢任何帮助。谢谢!
答案 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。
(图片取自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()