NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze – Lekce 7 - Kreslení na Graphics v C# .NET

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
RooBoo
Člen
Avatar
RooBoo:8.12.2013 8:56

to asi nie .. potrebujem aby sa obrazok pohyboval napriklad od [0,0].. potom [0,50].. a do [0,100] .. a od zaciatku potom .. ale neviem ako to spravit

 
Odpovědět
8.12.2013 8:56
Avatar
RooBoo
Člen
Avatar
Odpovídá na RooBoo
RooBoo:8.12.2013 9:18

mam to takto .. vytvoril som si triedu vykresli a tam som vytvoril metodu

public void vykresli_lisa(Graphics g,int i)
        {
            Image image = Image.FromFile("gamelisa.jpg");
            Point point = new Point(20, i);
            g.DrawImage(image, point);


        }

vo form1 som napisal

private void valecjedna_Paint(object sender, PaintEventArgs e)
        {
            for (int i = 0; i < 200; i++)
            {
                vykresli.vykresli_lisa(e.Graphics,i);
                valecjedna.Refresh();

            }

        }
Editováno 8.12.2013 9:19
 
Odpovědět
8.12.2013 9:18
Avatar
RooBoo
Člen
Avatar
Odpovídá na RooBoo
RooBoo:8.12.2013 11:51

prosim ta poradis ? :D

Editováno 8.12.2013 11:52
 
Odpovědět
+1
8.12.2013 11:51
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na RooBoo
David Hartinger:8.12.2013 12:00

Místo těch hloupých dotazů se nad tím kódem zamysli. Čím více takových dotazů a smajlíků, tím méně lidí ti pomůže. Já bych ti pomohl, kdyby jsi se choval normálně, ale takhle nemám chuť. Dotaz také patří do fóra, ne pod článek, kterého se netýká.

Odpovědět
-1
8.12.2013 12:00
New kid back on the block with a R.I.P
Avatar
RooBoo
Člen
Avatar
Odpovídá na David Hartinger
RooBoo:8.12.2013 12:13

Tak sa ospravedlňujem

 
Odpovědět
+1
8.12.2013 12:13
Avatar
kamo20101
Člen
Avatar
kamo20101:7.6.2014 15:28

pred precitanim tohto clanku som si spravil program ktory vykresluje biele body na ciernom pozadi na aktualnych suradniciach mysky ktore pomalicky chaoticky padali dolu, teda bolo to snezenie :) ale vykreslovane boli priamo na form a ked ich bolo vela zavalo to sekat a blikat, ako som to prerobil na picturebox ide to bez problemov .)

 
Odpovědět
7.6.2014 15:28
Avatar
Martin Srdoš:3.2.2015 23:27

Ahoj. Dá se ta událost "kinoPictureBox_Pa­int(object sender, PaintEventArgs e)" zavolat z jiné třídy? Napadlo mě udělat si metodu, co bude public static, takže jí zavolám odkudkoliv. Ale nevím, co by v ní mělo být.

 
Odpovědět
3.2.2015 23:27
Avatar
Odpovídá na Martin Srdoš
Lukáš Křehula:4.2.2015 11:07
kinoPictureBox.Invalidate();
 
Odpovědět
4.2.2015 11:07
Avatar
David Oczka
Tvůrce
Avatar
Odpovídá na kamo20101
David Oczka:19.6.2016 12:00

Sice píši relativně pozdě, ale někomu kdo bude číst tento článek se to třeba bude hodit. Pokud vykresluješ skrze Graphics do nějaké komponenty složitější grafiku a aplikace se seká, doporučil bych pár věci:

  • Nastavit vlastnost formuláře DoubleBuffered = true
  • Použít namísto komponenty PictureBox komponentu Label (Z nespočtu testů mám ověřeno, že je pro to nejrychlejší)
  • Používat na místo metody control.Invali­date() metodu control.Refresh(), která zajišťuje okamžité vykreslení

Ovšem co se týče té metody Invalidate, hodí se pokud je třeba překreslit pouze část nějaké komponenty, jako příklad uvedu jednu položku v Listboxu, kde už není třeba překreslit celou komponentu, pak se do metody jako parametr uvádí třída Rectangle, která nese informaci o oblasti k překreslení.

 
Odpovědět
+1
19.6.2016 12:00
Avatar
Jan Hodic
Člen
Avatar
Jan Hodic:17.10.2018 11:48

Podotykam, ze sedadla se maji vykreslovat do indexu sedadla.GetLen­gth(0)-1 a sedadla.GetLen­gth(1)-1, protoze jinak kvuli indexaci od nuly iterace opusti pole a program spadne.

 
Odpovědět
17.10.2018 11:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 34.