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

C# .NET .NET (C# a Visual Basic) Problém s kreslení do PictureBoxu pomoci Myse American English version English version

Avatar
Veganekk
Člen
Avatar
Veganekk:

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):

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
Nesnáším {}, proto se jim vyhýbám.
Avatar
matesax
Redaktor
Avatar
matesax:

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:

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:

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
Redaktor
Avatar
Odpovídá na Veganekk
matesax:

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:

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
Redaktor
Avatar
matesax:

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:

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
Redaktor
Avatar
Odpovídá na Veganekk
matesax:

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  +1 30.5.2013 22:17
Avatar
Veganekk
Člen
Avatar
Veganekk:

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
Redaktor
Avatar
Odpovídá na Veganekk
Honza Bittner:

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
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Veganekk
Člen
Avatar
Veganekk:

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
Redaktor
Avatar
Odpovídá na Veganekk
Honza Bittner:

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
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Veganekk
Člen
Avatar
Veganekk:

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
Redaktor
Avatar
Odpovídá na Veganekk
Honza Bittner:

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
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Veganekk
Člen
Avatar
Veganekk:

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:

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):

spis posli tu cast kodu, ktera uklada

Nahoru Odpovědět 31.5.2013 16:54
:)
Avatar
Odpovídá na Veganekk
Michal Žůrek (misaz):

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
Nesnáším {}, proto se jim vyhýbám.
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.