Рисование прямоугольника вокруг toolStripMenuItem
Я знаю, что могу рисовать прямоугольники практически везде, где хочу
using (Graphics G = myControl.CreateGraphics())
{
G.DrawRectangle(new Pen(myColor),myControl.Bounds);
}
но мне трудно понять, как это сделать с помощью toolStripMenuItem, чтобы я мог нарисовать прямоугольник вокруг него.
Любая помощь приветствуется. Спасибо!
3 ответа
Вы можете попробовать использовать событие Paint (вам никогда не следует использовать CreateGraphics) и свойство ContentRectangle:
void toolStripButton1_Paint(object sender, PaintEventArgs e) {
e.Graphics.DrawRectangle(Pens.Red, toolStripButton1.ContentRectangle);
}
Самый простой способ - унаследовать от управления и переопределить 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)
Пока
ToolStripMenuItem
не является элементом управления, его родитель. Поэтому вы можете позвонить
myToolStripMenuItem.GetCurrentParent().CreateGraphics()