• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Рисование меню в DrawItem

  • Автор темы Oleg
  • Дата начала
Статус
Закрыто для дальнейших ответов.
O

Oleg

Здравствуйте! Я хочу создать обственное меню. Для этого я включаю свойство OwnerDraw = true. Дальше в событии DrawItem рисую прямоугольник, добавляю картинку, в общем извращаюсь. Но область выделения остается маленькой и не соответствует нарисованному прямоугольнику. Ее можно увидеть вызвав e.DrawBackground(). Подкажите, что нужно сделать для того, чтобы область выделения была такого же размера как и прямоугольник. e.Bounds не для редактирования. Вот код (причем взят в оновном из MSDN):



private void menuItem1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{

e.DrawBackground();

string myCaption = ((MenuItem)sender).Text;
Brush myBrush = System.Drawing.Brushes.Blue;
Font myFont = new Font(FontFamily.GenericSerif, 14, FontStyle.Bold, GraphicsUnit.Pixel);
SizeF mySizeF = e.Graphics.MeasureString(myCaption, myFont);

e.Graphics.DrawString(myCaption, myFont, myBrush, e.Bounds.X, e.Bounds.Y);
e.Graphics.DrawRectangle(Pens.Black, new Rectangle(e.Bounds.X, e.Bounds.Y, Convert.ToInt32(mySizeF.Width), Convert.ToInt32(mySizeF.Height)));

}



Заранее благодарен.
 
C

C-roja

Добавить:

private void menuItem1_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
{
e.ItemWidth = myWidth;
e.ItemHeight = myHeight;

}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!