使用onPaint在TabPages上绘制图形

时间:2011-12-28 21:57:20

标签: .net tabcontrol onpaint

我需要在动态创建的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方法是做什么的。我怀疑自己是否清楚,但这就是我所能做到的。请给我一个出路。

0 个答案:

没有答案