c# blikání grafiky- double buffering

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

agil
Level 2
Level 2
Příspěvky: 181
Registrován: říjen 10
Pohlaví: Muž
Stav:
Offline

c# blikání grafiky- double buffering

Příspěvekod agil » 19 črc 2013 22:47

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();
               
            }
        }
        }
    }
immortal-world.net - přijďte si zahrát!

Reklama
Uživatelský avatar
franticek
Level 3
Level 3
Příspěvky: 435
Registrován: únor 07
Pohlaví: Nespecifikováno
Stav:
Offline

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

Příspěvekod franticek » 23 črc 2013 13:22

Ahoj.

Zkus se podívat tady.
A zkoušeli jste to vypnout a zapnout?

agil
Level 2
Level 2
Příspěvky: 181
Registrován: říjen 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod agil » 23 črc 2013 21:19

To nepomáhá...a ještě bych dodal, že sto bliká jen při refresh();
immortal-world.net - přijďte si zahrát!

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 27 črc 2013 17:00

pošli kod, možná tam máš něco špatně
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

agil
Level 2
Level 2
Příspěvky: 181
Registrován: říjen 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod agil » 30 črc 2013 15:55

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();
immortal-world.net - přijďte si zahrát!


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • 2 grafiky v 1 PC
    od Daladark » 14 srp 2023 19:12 » v Rady s výběrem hw a sestavením PC
    2
    991
    od petr22 Zobrazit poslední příspěvek
    14 srp 2023 21:31
  • PC Hardware 18k bez grafiky
    od Puntickar » 14 úno 2024 11:15 » v Rady s výběrem hw a sestavením PC
    7
    1018
    od Vlada47 Zobrazit poslední příspěvek
    14 úno 2024 15:14
  • upgrade grafiky
    od yaa » 14 črc 2023 11:16 » v Rady s výběrem hw a sestavením PC
    16
    1795
    od petr22 Zobrazit poslední příspěvek
    15 črc 2023 19:58
  • pomoc v oblasti grafiky
    od showpayne » 07 srp 2023 19:08 » v Vše ostatní (Off topic)
    0
    2277
    od showpayne Zobrazit poslední příspěvek
    07 srp 2023 19:08
  • pomoc z vyberom grafiky
    od mandes » 12 úno 2024 14:25 » v Rady s výběrem hw a sestavením PC
    6
    1020
    od Vlada47 Zobrazit poslední příspěvek
    13 úno 2024 18:00

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti