如何使用c#在tabcontrol上绘制图像?

时间:2011-07-13 13:18:13

标签: c# winforms tabcontrol

我必须使用C#在tabcontrol中绘制图像。我得到了一些提示,将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()导致调用paint事件并且它调用OnPaint()时,有没有办法调用'DrawItem'事件以便可以调用inturn OnDrawItem()?
  3. 感谢, RPS

1 个答案:

答案 0 :(得分:1)

你做错了,DrawItem事件只是为了自定义绘制标签,而不是标签页。只需实现标签页的Paint事件即可。请务必使用交给您的e.Graphics进行绘图。

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

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