Stránka 1 z 1

c# blikání grafiky- double buffering

Napsal: 19 črc 2013 22:47
od agil
Zdravím, vykreslovaná grafika mi bliká, vykresluji to na panel.
Na netu píšou abych zapnul doublebuffering, zkoušel jsem to, ale to nepomahá.
zkoušel jsem i toto, to také nepomáhá.

Kód: Vybrat vše

     
        public class MyDisplay : Panel
        {
            public MyDisplay()
            {
                this.DoubleBuffered = true;
           
                // or
                SetStyle(ControlStyles.AllPaintingInWmPaint, true);
                SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
                UpdateStyles();
               
            }
        }
        }
    }

Re: c# blikání grafiky- double buffering

Napsal: 23 črc 2013 13:22
od franticek
Ahoj.

Zkus se podívat tady.

Re: c# blikání grafiky- double buffering

Napsal: 23 črc 2013 21:19
od agil
To nepomáhá...a ještě bych dodal, že sto bliká jen při refresh();

Re: c# blikání grafiky- double buffering

Napsal: 27 črc 2013 17:00
od CZechBoY
pošli kod, možná tam máš něco špatně

Re: c# blikání grafiky- double buffering

Napsal: 30 črc 2013 15:55
od agil

Kód: Vybrat vše

private void panel1_Paint(object sender, PaintEventArgs e)
        {
             Graphics kp = e.Graphics;
            textBox4.Text = Mcontrol.ToString();
 
       
           
            if (Array.obsazeno == true)
            {


                Color cerna = Color.Black;
                Color gray = Color.Gray;
                Color lgray = Color.LightGray;
                Color red = Color.Red;
                Pen kostka = new Pen(cerna, 1);
                Pen kostkaneodhaleno = new Pen(gray, 10); //neodhaleno
                Brush kostkafull = new SolidBrush(cerna);//miny
                Brush kostkafullflag = new SolidBrush(red); //vlajka
                Brush kostkaneodhalenob = new SolidBrush(gray);
                Brush kostkaodhaleno = new SolidBrush(lgray);// neodhalene

               
                for (int a = 0; a < Array.x; a++)
                {
                    for (int b = 0; b < Array.y; b++)
                    {

                        if (Array.pole[a, b] == 0) //neodhaleno
                        {
                            kp.FillRectangle(kostkaneodhalenob, 20 * a, 20 * b, 20, 20);
                            kp.DrawRectangle(kostka, 20 * a, 20 * b, 20, 20);
                        }

                        else if (Array.pole[a, b] == 1) //neodhaleno mina
                        {
                            // kp.FillRectangle(kostkafull, 20 * a, 20 * b, 20, 20);
                            kp.FillRectangle(kostkaneodhalenob, 20 * a, 20 * b, 20, 20);
                            kp.DrawRectangle(kostka, 20 * a, 20 * b, 20, 20);
                        }
                        else if (Array.pole[a, b] == 2) //odhaleno mina
                        {

                            kp.FillRectangle(kostkafull, 20 * a, 20 * b, 20, 20);
                        }
                        else if (Array.pole[a, b] == 3) //vlajecka na mine
                        {

                            kp.FillRectangle(kostkafullflag, 20 * a, 20 * b, 20, 20);
                            kp.DrawRectangle(kostka, 20 * a, 20 * b, 20, 20);
                        }
                        else if (Array.pole[a, b] == 4) //odhaleno normal
                        {

                            kp.FillRectangle(kostkaodhaleno, 20 * a, 20 * b, 20, 20);
                            kp.DrawRectangle(kostka, 20 * a, 20 * b, 20, 20);
                        }
                       
                        else if (Array.pole[a, b] == 5) //vlajecka na normal
                        {

                            kp.FillRectangle(kostkafullflag, 20 * a, 20 * b, 20, 20);
                            kp.DrawRectangle(kostka, 20 * a, 20 * b, 20, 20);
                        }





                        //vlajecky na cislech



                       

                       
                       

       

                       
                            if ((Array.poleM[a, b] == 1) && (Array.pole[a,b]==4))
                       
                            {
                            kp.DrawImage(num1, a * 20, b * 20, 20, 20);
                       
                            }

                       
                            if ((Array.poleM[a, b] == 2) && (Array.pole[a,b]==4))
                       
                            {
                            kp.DrawImage(num2, a * 20, b * 20, 20, 20);
                       
                            }

                       
                            if ((Array.poleM[a, b] == 3) && (Array.pole[a,b]==4))
                       
                            {
                            kp.DrawImage(num3, a * 20, b * 20, 20, 20);
                       
                            }


                            if ((Array.poleM[a, b] == 4) && (Array.pole[a, b] == 4))
                       
                            {
                            kp.DrawImage(num4, a * 20, b * 20, 20, 20);
                       
                            }


                            if ((Array.poleM[a, b] == 5) && (Array.pole[a, b] == 4))
                       
                            {
                            kp.DrawImage(num5, a * 20, b * 20, 20, 20);
                       
                            }
                            if ((Array.poleM[a, b] == 6) && (Array.pole[a, b] == 4))
                            {
                                kp.DrawImage(num6, a * 20, b * 20, 20, 20);

                            }
                            if ((Array.poleM[a, b] == 7) && (Array.pole[a, b] == 4))
                            {
                                kp.DrawImage(num7, a * 20, b * 20, 20, 20);

                            }

                           
                    }
                }
            }






a v mousebutton mam panel1.Refresh();