Как нарисовать изображение над TabControl с помощью C #? - PullRequest
1 голос
/ 13 июля 2011

Я должен нарисовать изображение в tabcontrol, используя C #.Я получил несколько подсказок, чтобы изменить DrawMode на OwnerDrawFixed и SizeMode на Fixed.После этого запишите обработчик для события DrawItem как:

this.tabControl1.DrawItem += 
    new System.Windows.Forms.DrawItemEventHandler(this.OnDrawItem);

private void OnDrawItem(object sender, DrawItemEventArgs e)
{
    Graphics g = Graphics.FromHwnd(tabPage1.Handle);/*e.Graphics;*/         

    DrawArrowImage(g);
}

Теперь эта функция DrawImage () запускает таймер, который будет продолжать перерисовывать изображение стрелки в следующих точках, чтобы напоминать движущуюся стрелку.Теперь у меня есть несколько проблем:

  1. OnDrawItem не вызывается при запуске приложения (как OnPaint ()).Как я могу это сделать?
  2. Поскольку вызов Invalidate () вызывает событие рисования и вызывает OnPaint (), есть ли способ вызвать событие DrawItem, чтобы можно было вызывать inturn OnDrawItem ()?

спасибо, RPS

1 Ответ

1 голос
/ 13 июля 2011

Вы делаете это неправильно, событие DrawItem предназначено только для пользовательского рисования вкладки, а не страницы вкладки.Просто реализуйте событие Paint вкладки.Обязательно используйте предоставленную вам электронную графику для рисования.

...
this.tabPage1.Paint += this.OnDrawPage;
...

private void OnDrawPage(object sender, PaintEventArgs e)
{
    DrawArrowImage(e.Graphics);
}
...