Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Problém s kreslení do PictureBoxu pomoci Myse

Aktivity
Avatar
Veganekk
Člen
Avatar
Veganekk:30.5.2013 21:35

Ahoj
Mám problém s kreslením do Pictureboxu. Jde mi kreslit do Formu ale jakmile to hodím do PictureBoxu tak nic se neděje... V Form to jde ale kdyz to dam do picture boxu jako ted vubec nejde kreslit :(
Tu část kodu :

private void Kontrola()
        {
           bool Malov = false;
           int Velstestce= 7;
           private Color Barva = Color.Black;


            pictureBox1.BackColor = Barva;
        }
        private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
            ToolStripMenuItem menuItem = (ToolStripMenuItem)sender;
            Velstestce= 4;
            Cursor = Cursors.Hand;
            Kontrola();
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
                Malov = true;
        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            this.Cursor = Cursors.Cross;
            if (Malov)
            {
                Graphics graf = CreateGraphics();
                //graf.FillRectangle(new SolidBrush(Color.FromName(Barva), e.X, e.Y, brushSize, brushSize);
                graf.FillRectangle(new SolidBrush(Barva), e.X, e.Y, Velstestce, Velstestce);
            }
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            Malov = false;
        }
Odpovědět
30.5.2013 21:35
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Odpovídá na Veganekk
Michal Žůrek - misaz:30.5.2013 21:38

Nejlepší je si udělat:

private Graphics g;

A po loadu si načíst:

g = PictureBox.CreateGraphics()

Později už kreslit jenom do g.

 
Nahoru Odpovědět
30.5.2013 21:38
Avatar
matesax
Tvůrce
Avatar
matesax:30.5.2013 21:44

Fuj!

private PictureBox canvas = new PictureBox();

public Graphics Plot { get; set; }

...

Konstruktor:

Plot = canvas.CreateGraphics();

Prosím piš objektově - v jednom objektu má být jen jedna funkce. Takže si pro každou část udělej objekt. Místo opisného Malov (což je pojmenování nanic) si vytvoř event, nebo akci... Pokud jsi začátečník, tak se omlouvám a když mi napíšeš o co GO, popíši ti to více...

Editováno 30.5.2013 21:45
 
Nahoru Odpovědět
30.5.2013 21:44
Avatar
Veganekk
Člen
Avatar
Veganekk:30.5.2013 21:44

Diky funguje to. Takhle to resit by me nenapadlo. Diky za pomoc :) Jsem o ted mnohem moudrejsi tak snad vse pujde jak ma :). takze jeste jednou DIKY Misaz

Nahoru Odpovědět
30.5.2013 21:44
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Veganekk
Člen
Avatar
Veganekk:30.5.2013 21:47

Matesax nejak necahpu co tu myslis... -_-
Me staci jen toto. na tvary a dalsi veci pouzivam Get a Sety ale na stetec jsme potreboval toto a Misaz poradil a jde to takze jsem spokojen...

Nahoru Odpovědět
30.5.2013 21:47
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Veganekk
matesax:30.5.2013 21:50

Problém je, že takovýto prasekód není k ničemu... Špatně pojmenováváš, špatně plánuješ atd... Nacpal jsi vše do jednoho objektu - přitom každá část má mít vlastní umístění... Proměnná Malov je naprosto nemístná. Buď event + vlákno - event dostane vlastnost boolean - Running, nebo to lze udělat akcí...

 
Nahoru Odpovědět
30.5.2013 21:50
Avatar
Veganekk
Člen
Avatar
Veganekk:30.5.2013 21:55

A tak mi teda napiš jak by to podle tebe melo vypadat ať se poucim protoze moc nechápu co chceš -_-... pokud teda budeš tak hodný a říkáš ze ten kod prasím tak napiš jak by mel vypadat prosím tě. Ať se poučím...
Děkuji

Nahoru Odpovědět
30.5.2013 21:55
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
matesax
Tvůrce
Avatar
matesax:30.5.2013 22:05

Zaprvé - PictureBox je vzhledová část přítomná ve formuláři. Takže místo práce ve formuláři bych začal z hlavní metody - Main. (defaultně v Program.cs) Z té bych spravoval celou aplikaci - ostatně proto to také je Main metoda... Takže do formuláře bych strkal jen grafiku - ne logiku. A ani vykreslování přímo - jen si tam udělal několik metod pro vykreslování a jeho spravování... Tyto metody bych volal z Main a parametrizoval je pro své účely. Data pro vykreslení bych dostával z dalších objektů. A na to bych musel znát celý kontext díla... Eventy bych již ve formuláři neřešil - jen pro některé nutné ve formuláři udělal zmíněné metody, ale zbytek napojoval v Main.

Editováno 30.5.2013 22:08
 
Nahoru Odpovědět
30.5.2013 22:05
Avatar
Veganekk
Člen
Avatar
Veganekk:30.5.2013 22:13

Aha tak to uz chapu co myslis. Chces qabych to delal jako v consoli vse pres Program.cs . Necham to takhle. Ucitelovi to stacit bude ale hlavne uz chci mit od toho pokoj takze si vystacim stim prasackym kodem jak tomu rikas. Hlavni ze to bude fungovat :). Jinak dik za pomoc kdyby neco napisu o radu :)

Nahoru Odpovědět
30.5.2013 22:13
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Veganekk
matesax:30.5.2013 22:17

Nechápeš mě. Jedná se mi o OOP. Mícháš logiku a grafiku. Forms jsou formuláře - čistá grafika. Tam nemá logika místo. A nacpat vše do Main také není řešení... Objekt má být univerzální - jediný zaujatý (samotná aplikace) Main. Ovšem v Main by se měly jen spravovat objekty - jen je využívat k dosažení cíle dané aplikace. Již by tam neměla být přídatná logika... Tudíž v Main jen volat parametrizované objekty a různě mezi nimi posílat data... A každý volaný objekt by měl být nezaujatý. (neudělaný pro jednu konkrétní aplikaci) Chápu, že je ti to jedno - jedn odevzdáš úkol. Ale jako programátor takto nemáš šanci... (C# == OOP)

 
Nahoru Odpovědět
30.5.2013 22:17
Avatar
Veganekk
Člen
Avatar
Veganekk:30.5.2013 22:27

Chapu ale osobne se tu stvu s projektem uz 2 tydny a delam App miniher a sekl jsme se u malovani. Jinak vse mam v celku hotove a uz to chci mit z krku takze se stim nechci stvat. Az budu mit cas a nebudu z toho znicenej tak si to prepisu od zakladu ted mi jde o funkcnost nic jineho me nezajima. Dekuji za vsechny tve rady a vemu si je k srdci :)

Nahoru Odpovědět
30.5.2013 22:27
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Veganekk
Honza Bittner:30.5.2013 22:30

Kdyby ses nejdříve zajímal o naučení jak psát lépe a až poté udělal funkční applikaci tak by sis ušetřil mnoho a mnoho času ! :)

Nahoru Odpovědět
30.5.2013 22:30
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Veganekk
Člen
Avatar
Veganekk:30.5.2013 22:33

Nejaka rada kde se to vse doctu ? U nas ve skole je vse o samouceni takze nejaka rada kde bych se mohl inspirovat?->(Navod,Tutori­aly,Knihy,Kody,­...)

Abych mel lepsi inspiraci pro priste jak to delat abych se poucil. Diky

Editováno 30.5.2013 22:33
Nahoru Odpovědět
30.5.2013 22:33
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Veganekk
Honza Bittner:30.5.2013 22:37

Víš o tom že tato stránka nemá jen dobré fórum, ale má i super tutoriály ? :O

http://www.itnetwork.cz/…hry-zdrojaky

:P
Nahoru Odpovědět
30.5.2013 22:37
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Veganekk
Člen
Avatar
Veganekk:30.5.2013 22:42

No to vím ale nejak mi to nedochazi... Posledni dobou jsme jako vby me do vody hodili takze diky

Nahoru Odpovědět
30.5.2013 22:42
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Veganekk
Honza Bittner:30.5.2013 22:43

Tak nepospíchej a vše si pořádně pomalu přečti a vždy vyzkoušej ...
Jestli něco nepochopíš, přečti si to znova :)

Nahoru Odpovědět
30.5.2013 22:43
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Veganekk
Člen
Avatar
Veganekk:30.5.2013 22:48

JJ ja jsem ten typ ze si radsi projizdim kody a hraju si stim dokud nepochopim co to dela. A kdyz neco programuju tak to delam tak zkousim do te doby nez to jde... Napr. hada jsem delal 4x nez jsem odstranil Bugy ktere mi nasel kamarad ted jde v pohode a napsany je uplne suprove prehledny... Ale to jsme psal hned ze zacatku kdyz jsme zacinal s projektem ted me to zacina stvat ze uz mi to pomalu nemysli... Ale diky za pomoc :) Kdybych zase potreboval tak napisu....

Nahoru Odpovědět
30.5.2013 22:48
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Veganekk
Člen
Avatar
Veganekk:31.5.2013 16:39

Tak ted mam problem pri ukladani ... Otevru si obrazek do Pictureboxu ale jakmile na nej neco nakreslim nejake cary a ulozim vubec se neulozi to co na nem namaluju ci vybravim a zustane tak jak jsem ho otevrel...
Muzete poradit jeste at nezakladam nove tema... Jinak otviram pomoci openfiledialog a ukladam pomoci savefiledialog.
Dekuju za pomoc

Nahoru Odpovědět
31.5.2013 16:39
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Odpovídá na Veganekk
Luboš Běhounek Satik:31.5.2013 16:54

spis posli tu cast kodu, ktera uklada

Nahoru Odpovědět
31.5.2013 16:54
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Veganekk
Michal Žůrek - misaz:31.5.2013 16:55

Jako ty chceš uložit obrázek (třeba png) z pictureBoxu?

Řešílo se to zde: http://stackoverflow.com/…r-its-edited

 
Nahoru Odpovědět
31.5.2013 16:55
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 20 zpráv z 20.