[ wiktor91 @ 26.12.2009. 21:56 ] @
Code:
private void slikaPanel_MouseClick(object sender, MouseEventArgs e)
        {
            int x1, y1;
            int x2, y2;
            int xElement, yElement;
            if (e.Button == MouseButtons.Left && e.Clicks == 1)
            {
                x1 = e.X;
                y1 = e.Y;
                slikaPanel.CreateGraphics().FillRectangle(Brushes.Red, x1, y1, 2, 2);
            }
            if (e.Button == MouseButtons.Left && e.Clicks == 2)
            {
                x2 = e.X;
                y2 = e.Y;
                slikaPanel.CreateGraphics().FillRectangle(Brushes.Red, x2, y2, 2, 2);
            }
            xElement = x2 - x1;
            yElement = y2 - y1;
            double udaljenostTocaka = Math.Sqrt(Math.Pow(yElement, 2) + Math.Pow(xElement, 2));
        }


Izbacuje grešku Use of unassigned local variable x1,x2,y1,y2.
Znam u čemu je greška ali ne znam kako sada dobiti te varijable "van" da ih mogu koristiti za izračun xElement i yElement.

[ mmix @ 26.12.2009. 23:11 ] @
inicijalizuj ih na nulu na pocetku (int x1 = 0) itd.
[ bocy @ 27.12.2009. 07:31 ] @
Dobro ti je rekao mmix.

Razzlog zasto to moras da uradis je sto linije

xElement = x2 - x1;
yElement = y2 - y1;

gde vrsis oduzimanje promenljivih x1, x2, y1, y2 nalaze iza
if strukture, a kompajler smatra da if ne mora uvek da se desi, a ti vresnosti
ovih promenljivih dodeljujes upravo u toj if strukturi, tako da po
kompajleru moze da se desi da one nemaju vrednost.

Ovo sam ti napisao da ti bude jasnije za ubuduce zasto ti prijavljena ova greska

Poz
[ wiktor91 @ 27.12.2009. 08:07 ] @
Puuuno vam hvala obojci na objašnjenju!

C# ima tih trikova kojih u C++ nema(barem se ne sječam da sam sa ovakvim stvarima imao problema), a još uvjek čekam da mi stigne C# knjiga koju sam naručio pa da se maknem sa površnih tutoriala i naučim sve te stvari koje treba znati o jeziku.
[ wiktor91 @ 27.12.2009. 08:21 ] @
Samo da se požalim kad več imam priliku... jučer sam cjelu večer radio na tom programčiču jer sam usput učio kako koristiti grafiku, evente(prvi put se ozbiljnije susrečem s GUI programiranjem) i bio sam več 90% gotov s tim programom samo sam trebao ubaciti Menu i napraviti Open dialog iz kojeg bi se učitavala slika. Imao sam otvorena 2 VS 2008 jer sam iz jednoga "krao" kod iz slične aplikacije a u drugom sam pisao svoj kod i kad sam pokušao kompajlirati srušio mi se VS u kojem je bio moj program i nemogu na računalu nači projekt niti fajlove tako da ču morati ispočetka pisati sav kod... nije ga bilo tolko puno ali ipak nije trebalo sve da ode u PM.
Neznam zašto se to dogodilo? Pa zar VS 2008 ne sprema automatski projekt kad ga se kompajlira? To je slučaj sa svim drugim okruženjima koje sam isprobao barem za C++(Code::Blocks, Dev-CPP, Komodo, Borland i još par njih na Linuxu).
[ night-shift @ 27.12.2009. 11:19 ] @
Uključi gledanje skrivenih fajlova i pogledaj u My Documents\Visual Studio 2008, ko zna, možda je i sačuvao.

Ubuduće koristi ctrl+s ;)

[Ovu poruku je menjao night-shift dana 27.12.2009. u 12:32 GMT+1]
[ Shadowed @ 27.12.2009. 11:22 ] @
Trebao si da snimis projekat :)
Dok to ne uradis, VS ga snima negde u ApplicationData, pa mozda i mozes da ga iskopas.
Mozes podesiti u opcijama da ti uvek prilikom kreiranja odmah snimi na neku zeljenu lokaciju, ako ti tako vise odgovara. Ja licno ne koristim to, jer cesto pokrenem samo da isprobam nesto pa bi mi se vukla gomila bespotrebnih projekata od nekoliko ili nekoliko desetina linija.
[ wiktor91 @ 27.12.2009. 15:00 ] @
Barem sam naučio lekciju, sad neču zeznuti kad če se raditi o nekom puno večem projektu...

Pregledao sam Application Data, Temporary folder, uključio Hidden files i nigde ni traga mom projektu :(
[ wiktor91 @ 28.12.2009. 16:03 ] @
Evo mene opet ali sa drugačijim problemom pa da ne otvaram novu temu tu ču postaviti pitanje.
Code:
int brojKlikova = 1;
        bool prvaTockaPostavljena = false;
        bool drugaTockaPostavljena = false;
        private void slikaPanel_MouseClick(object sender, MouseEventArgs e)
        {
            int x1 = 0, y1 = 0;
            int x2 = 0, y2 = 0;
            int xElement, yElement;
            System.Drawing.Pen crvenaLinija = new Pen(Brushes.Red, 1);
                if (e.Button == MouseButtons.Left & brojKlikova % 2 == 1)
                {
                    x1 = e.X;
                    y1 = e.Y;
                    slikaPanel.CreateGraphics().FillRectangle(Brushes.Red, x1, y1, 2, 2);
                    brojKlikova++;
                    prvaTockaPostavljena = true;
                }
                else
                {
                    x2 = e.X;
                    y2 = e.Y;
                    slikaPanel.CreateGraphics().FillRectangle(Brushes.Blue, x2, y2, 2, 2);
                    brojKlikova++;
                    drugaTockaPostavljena = true;
                }
                if (prvaTockaPostavljena && drugaTockaPostavljena == true)
                {
                    xElement = x2 - x1;
                    yElement = y2 - y1;
                    double razmakTocaka = Math.Sqrt(Math.Pow(yElement, 2) + Math.Pow(xElement, 2));
                    double zaokruzeno = Math.Round(razmakTocaka);
                    razmakBox.Text = zaokruzeno.ToString();

                    slikaPanel.CreateGraphics().DrawLine(crvenaLinija, new Point(x1, y1), new Point(x2, y2));
                }
        }


Ideja je da kada korisnik klikne na sliku, program na tom mjestu nacrta točku, tada korisnik klikne na drugo mjesto i na tom drugom mjestu opet se nacrta točka ali druge boje i sad bi se između te 2 točke trebala nacrtati linija koja ih povezuje i kada korisnik opet klikne na neko drugo mjesto opet sve kreče ispočetka tj. nova prva točka i opet povezivanje s drugom točkom.
Ovo gore radi samo dio toga što bi trebalo, iscrtava različite točke ali uvjek povezuje točku (0,0) s drugom točkom a ne prvu sa drugom. Neznam kako napraviti taj dio da mi se 2 točke iscrtavaju u paru i onda se počinje opet od drugog para novih točki.

Trebam samo ideju kako to ostvariti.
[ wiktor91 @ 28.12.2009. 22:07 ] @
Probao sam nešto sa while petljom i kad sam pokrenuo program, sve je zaštekalo, čini mi se da uopče nemogu u C# koristiti while petlju jer mi se sve smrzne kad se počne while vrtiti...

[ bocy @ 29.12.2009. 08:09 ] @
Pa naravno da ti uvek crta od tacke 0,0 kada si postavio lokalne promenljive, moras globalne, a i kada god se desi click ti im dodelis vrednost nule. Zato se to i desava.

private void slikaPanel_MouseClick(object sender, MouseEventArgs e)
{
int x1 = 0, y1 = 0;
int x2 = 0, y2 = 0;
int xElement, yElement;
}

Znaci ovde im ti pri svakom kliku resetujes vrednost na 0. To ne sme! Odnosno sme, ali ce ti uvek vuci liniju od tacke (0,0) ;)
[ wiktor91 @ 29.12.2009. 10:25 ] @
Ne mogu vjerovati kakav glupi propust... hvala ti!

Sad crta liniju dobro ali još moram nekako rješiti onu stvar da mi crta linije samo između 2 para točaka, sada crta liniju između svake sljedeče točke i one prije.
[ wiktor91 @ 29.12.2009. 10:36 ] @
Nemogu vjerovati koliko ovo spavanje dobro utječe na mene :D
Jučer sam dugo razmišljao kako rješiti ovaj problem, smišljao razne petlje i metode, pisao pseudo kod i nisam uspio napraviti ništa. Sada ujutro dođem i u 15 minuta riješim kompletan "problem" u 2 linije dodatnog koda.

Evo sada radi sve kako i treba! Još riješim neke stvari i to je to! :D
[ bocy @ 29.12.2009. 18:36 ] @
Odlicno ;)