Witam forumowiczów. Potrzebuję pomocy w dokończeniu programu na zaliczenie. Mój program wczytuje plik WAVE i wyświetla dane z nagłówka oraz rysuje jego wykres wraz z powiększeniem jego. I właśnie przy tym wykresie mam najwięcej problemów. Może ktoś coś doradzi i pomoże.Oto kod programu:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Drawing2D;


namespace wykres_wav
{
    public partial class Form1 : Form
    {
        int liczbaprobek;
        int[] probki;
        int rozmiar_bloku_danych;
        Int16 rozmiarprobki;
        int kanaly;

        private string metoda1(BinaryReader czytaj, int ile)//pierwsza funkcja do zczytywania bajtów i konwersacja na ASCII
        {
            byte[] n = new byte[ile];
            czytaj.Read(n, 0, n.Length);
            return Encoding.ASCII.GetString(n, 0, n.Length);//konwersacja na ASCII(stringi)
        }
        private string metoda2(BinaryReader czytaj, int ile)
        {
            byte[] m = new byte[ile];
            czytaj.Read(m, 0, m.Length);
            int temp;
            if (ile == 4)
                temp = BitConverter.ToInt32(m, 0);
            else
                temp = BitConverter.ToInt16(m, 0);
            return temp.ToString(); //konwersacja z Int16/Int32 na String
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void wczytaj_Click(object sender, EventArgs e)
        {

            try
            {

                OpenFileDialog plik = new OpenFileDialog();
                plik.Title = "Otwieranie pliku wave";
                plik.InitialDirectory = "C:\\Users\\*\\Desktop";
                plik.Filter = "Pliki wav |*.wav";
                plik.ShowDialog();
                plik.OpenFile();

                scieszka.Text = plik.FileName;

                BinaryReader reader = new BinaryReader(File.OpenRead(plik.FileName));
                textBox1.Text = metoda1(reader, 4);
                textBox2.Text = metoda2(reader, 4);
                textBox3.Text = metoda1(reader, 4);
                textBox4.Text = metoda1(reader, 4);
                textBox5.Text = metoda2(reader, 4);
                if ((Convert.ToInt16(metoda2(reader, 2))) == 1)
                    textBox6.Text = "Brak kompresji";
                else
                    textBox6.Text = "Kompresja modulacja PCM";

                kanaly = Convert.ToInt32(metoda2(reader, 2));
                if (kanaly == 1)
                    textBox7.Text = "MONO";
                else
                    textBox7.Text = "STEREO";

                textBox8.Text = metoda2(reader, 4);
                textBox9.Text = metoda2(reader, 4);

                rozmiarprobki = reader.ReadInt16();
                textBox10.Text = Convert.ToString(rozmiarprobki);
                textBox11.Text = metoda2(reader, 2);
                byte data = 0;
                while (data == 0)
                {
                    if (metoda1(reader, 1) != "d") continue;
                    if (metoda1(reader, 1) != "a") continue;
                    if (metoda1(reader, 1) != "t") continue;
                    if (metoda1(reader, 1) != "a") continue;
                    data = 1;
                }
                textBox12.Text = "data";

                rozmiar_bloku_danych = (int)reader.ReadUInt32();
                textBox13.Text = Convert.ToString(rozmiar_bloku_danych);

                liczbaprobek = ((rozmiar_bloku_danych / rozmiarprobki) / kanaly);
                textBox15.Text = Convert.ToString(liczbaprobek);

                probki = new int[liczbaprobek];
                for (int i = 0; i < liczbaprobek; i++)
                {
                    probki[i] = reader.ReadInt16();
                }

                
                int z = liczbaprobek / PictureBox.Width;
                trackBar1.Maximum = Convert.ToInt32(liczbaprobek / PictureBox.Width);    
                trackBar1.Value = hScrollBar1.Maximum;
                
                
                trackBar1.Value = 0;

                reader.Close();
                rysowanie();
            }
            catch
            {
                MessageBox.Show("Nie wybrałeś pliku");
            }


        }
        private void rysowanie()
        {



            Graphics wykres = PictureBox.CreateGraphics();
            Pen narysuj = new Pen(Color.Blue);

            hScrollBar1.Maximum = Convert.ToInt32(liczbaprobek - PictureBox.Width - 1);
            hScrollBar1.LargeChange = trackBar1.Value * PictureBox.Width;
            hScrollBar1.SmallChange = trackBar1.Value * PictureBox.Width;
            hScrollBar1.Refresh();


            Refresh();

            int a = 0, b1 = 0, b2 = 0;
            for (int i = hScrollBar1.Value; (i < hScrollBar1.Value + PictureBox.Width) || a < PictureBox.Width; i += trackBar1.Value)
            {

                b1 = ((PictureBox.Height / 2) - (probki[i] / PictureBox.Height));

                b2 = ((PictureBox.Height / 2) - (probki[i + trackBar1.Value] / PictureBox.Height));

                wykres.DrawLine(narysuj, a, b1, a + 1, b2);
                a++;

            }


            hScrollBar1.Enabled = true;
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            hScrollBar1.Value = 0;
            rysowanie();


        }

    }
}