TrackBar, DrawLine i Panel

0

Czesc,
Mam pewen problem. Probuje zaprogramowac trackbara w ten sposob, ze jak przesuwa sie go w jedna lub druga strone to razem z nim przesuwa sie tez DrawLine w panelu.

Zrobilem w ten sposob:

        public bool trcGodz1_1 = false;
        public bool trcGodz1_2 = false;
        public bool trcGodz1_3 = false;
private void trackBar1_Scroll(object sender, EventArgs e)
        {
 switch (trcGodz1.Value)
           {
               case 1:
                    trcGodz1_1 = true;
                    panel1.Refresh();
                   break;
               case 2:
                    trcGodz1_1 = false;
                    trcGodz1_2 = true;
                     panel1.Refresh();
               case 3:
                    trcGodz1_2 = false;
                    trcGodz1_3 = true;
                    panel1.Refresh();
                   break;
}
}
private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Pen blackpen = new Pen(Color.Black, 2);
            Graphics g = e.Graphics;

            if (trcGodz1_1)
            {
                g.DrawLine(blackpen, 0, 0, 0, 485);
            }
            else if (trcGodz1_2)
            {
                g.DrawLine(blackpen, 5, 0, 5, 485);
            }
            else if (trcGodz1_3)
            {
                g.DrawLine(blackpen, 5, 0, 5, 485);
            }
}

No i niby wszystko dziala, ale przy wiekszej ilosci trcGodz1.Value jak przesunie sie go za szybko, to linia zatrzymuje sie. Musze przesuac trackbara do tego miejsca gdzie zatrzymala sie linia i z powrotem powoli przeciagnac ja dalej. Jak przesuwam powoli to dziala jak nalezy. Co moze byc tego przyczyna?
Chyba, ze jest jakies inne, prostsze tego rozwiazanie, to prosze o wskazowki

Z gory dziekuje za podpowiedz.

0

nie używaj tu żadnych booli, tylko rysuj linię na współrzędnych wyliczanych bezpośrednio z pozycji trackbara.

0
Azarien napisał(a)

nie używaj tu żadnych booli, tylko rysuj linię na współrzędnych wyliczanych bezpośrednio z pozycji trackbara.

Tak tez probowalem. Ale za bardzo nie wiem jak zrobic zeby linia sie przesunela (tzn. zeby znikla jedna i zaraz pozniej pojawila sie nowa - przy przesunieciu). Na poczatku probowalem uzyc:

private void trackBar1_Scroll(object sender, EventArgs e)
        {

           System.Drawing.Graphics graphicsObj;
           graphicsObj = this.CreateGraphics();
           Pen myPen = new Pen(System.Drawing.Color.Black, 2);
           graphicsObj.Clear(SystemColors.Control);

switch (trcGodz1.Value)
           {
               case 1:
                    graphicsObj.Clear(SystemColors.Control);
                    graphicsObj.DrawLine(myPen, 485, 25, 485, 421);
                   break;

               case 2:
                    graphicsObj.Clear(SystemColors.Control);
                    graphicsObj.DrawLine(myPen, 490, 25, 490, 421);
                    break;

               case 3:
                    graphicsObj.Clear(SystemColors.Control);
                    graphicsObj.DrawLine(myPen, 495, 25, 495, 421);
                   break;
}

Ale to sie nie sprawdza, w momencie kiedy mam kilka trackbar'ow i kilka linii.
Bardzo prosze o pomoc.

Pozdrawiam i zycze milego dnia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1