Veľkonočná akcia je tu a s ňou aj extra kredity ZADARMO na náš interaktívny e-learning. Dobij si teraz kredity a posuň sa vo svojej kariére vpred!
Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 7. diel - Kreslenie na Graphics v C # .NET

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
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

 
Odpovedať
8.12.2013 8:56
Avatar
RooBoo
Člen
Avatar
Odpovedá 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();

            }

        }
Editované 8.12.2013 9:19
 
Odpovedať
8.12.2013 9:18
Avatar
RooBoo
Člen
Avatar
Odpovedá na RooBoo
RooBoo:8.12.2013 11:51

prosim ta poradis ? :D

Editované 8.12.2013 11:52
 
Odpovedať
+1
8.12.2013 11:51
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá 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á.

Odpovedať
-1
8.12.2013 12:00
New kid back on the block with a R.I.P
Avatar
RooBoo
Člen
Avatar
Odpovedá na David Hartinger
RooBoo:8.12.2013 12:13

Tak sa ospravedlňujem

 
Odpovedať
+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 .)

 
Odpovedať
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.

 
Odpovedať
3.2.2015 23:27
Avatar
Odpovedá na Martin Srdoš
Lukáš Křehula:4.2.2015 11:07
kinoPictureBox.Invalidate();
 
Odpovedať
4.2.2015 11:07
Avatar
David Oczka
Tvůrce
Avatar
Odpovedá 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í.

 
Odpovedať
+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.

 
Odpovedať
17.10.2018 11:48
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 34.