我需要在动态创建的tabpages上绘制图形。我打算使用的数据来自mainform类。我很遗憾避免再上一堂课。但我现在无法重新开始,尤其是在编写2k行代码之后。
这是我的tabcontrol类
partial class grafCizKont : TabControl
{
public grafCizKont()
{
Init();
}
private void Init()
{
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.ResizeRedraw, true);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
DrawTabPane(e.Graphics);
}
private void DrawTabPane(Graphics yuzey)
{
if (!Visible)
return;
// here we draw our tabs
for (int i = 0; i < 30; i++)
if (pGenClickTut > i)
graphCiz(yuzey,graphDizi, it2, i);
}
}
和我的graphCiz方法,它位于mainform类中。
public static void graphCiz(Graphics yuzey, int[,] graphDizi, int it, int kSayi = 1)
{
int bolum;
yuzey.Clear(Color.Snow);
Pen kalem;
SolidBrush s;
kalem = new Pen(Color.Black, 2.0f);
s = new SolidBrush(Color.Blue);
yuzey.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
yuzey.DrawLine(kalem, 30, 15, 30, 135);
yuzey.DrawLine(kalem, 30, 135, 300, 135);
int orta, sayi;
orta = graphDizi[kSayi,0];
int son = 15 * it;
sayi = graphDizi[kSayi, it];
graphDiziDuzgun[kSayi, it] = minMax(orta, sayi);
if (it > 0)
{
bolum = 15;
int j = 0;
for (int i = 0; i < son; i += bolum)
{
if (i > 0)
{
cizgi(yuzey, 30 + i, graphDiziDuzgun[kSayi, j - 1] , 30 + i + bolum, graphDiziDuzgun[kSayi, j], kSayi) ;
}
if (i == 0)
{
cizgi(yuzey, 30, 135, 30 + bolum, graphDiziDuzgun[kSayi, j], kSayi );
}
j++;
}
}
}
当我执行这个程序时。我收到一个错误说“System.NullReferenceException未处理”。我认为它指向yuzey,它应该是一个Graphics对象。我不知道如何将它引用到我的tabcontrol。而且我不确定我的onpaint方法是做什么的。我怀疑自己是否清楚,但这就是我所能做到的。请给我一个出路。