Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Gde je korisnik kliknuo ?

[es] :: .NET :: .NET Desktop razvoj :: Gde je korisnik kliknuo ?

[ Pregleda: 1722 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cesare
Misko Petrovic

Član broj: 55805
Poruke: 201
*.dynamic.isp.telekom.rs.



+1 Profil

icon Gde je korisnik kliknuo ?17.11.2012. u 18:04 - pre 138 meseci
Pozdrav svima !!!!!

Imam sliku Srbije podeljenu po regionima gde je svaki region obojen drugom bojom. Slika je u .gif formatu da bi ostatak slike (pozadina) bila transparentna. Ta slika se prilikom pokretanja aplikacije učitava u PictureBox kontrolu i služi za dalju navigaciju kroz aplikaciju. Znači korisnik bi trebalo da klikne na neki region i da se učita slika njegovih okruga. Svaki region je druge boje jer sam pretpostavio da ću tako moći da utvrdim koji je region korsnik odabrao. Tu nastaje problem. U MouseMove događaju PictureBox kontrole sam koristio kod

Code:

((Bitmap)pctIzbor.Image).GetPixel(e.X, e.Y)


da bih dobio boju pixela na trenutnoj lokaciji miša na slici. Da bih dobio oznaku boje regiona koristio sam program Color Cop uz pomoć kog sam bio HEX vrednost boje. Kod koji sam koristio da bih uporedio boju pixela i boju regiona je

Code:

((Bitmap)pctIzbor.Image).GetPixel(e.X, e.Y).Name == ColorTranslator.FromHtml("#98C445").Name


Tu nastaje problem. Funkcija GetPixel ni jednog trenutka ne pronalazi na slici boju koja bi trebalo da bude konstanta (izraz desno u jednakosti). Čak na celoj regiji na slici sa istom bojom, pronalazi nekoliko različitih vrednosti za boju, iako je sve obojeno bez ikakvih efekata (jedna ista boja pokriva celu površinu regiona). Gde je ovde greška? Postoji li neki drugi način da se ovo reši?

Unapred hvala...
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Gde je korisnik kliknuo ?17.11.2012. u 18:33 - pre 138 meseci
Uporedi r, g, b vrednosti boje umesto imena.
 
Odgovor na temu

cesare
Misko Petrovic

Član broj: 55805
Poruke: 201
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Gde je korisnik kliknuo ?18.11.2012. u 07:06 - pre 138 meseci
Glavni problem je u tome što GetPixel() ne vraća istu boju pixela na celoj površini koja je obojena istom bojom. Kako to rešiti?
 
Odgovor na temu

cesare
Misko Petrovic

Član broj: 55805
Poruke: 201
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Gde je korisnik kliknuo ?18.11.2012. u 11:08 - pre 138 meseci
Otkrio sam zašto GetPixel() ne vraća ispravno boju pixela. Uzimaju se vrednosti pozicije miša u PictureBox kontroli, a traži se boja pixela iz Bitmap objekta u memoriji. A podesio sam da PictureBox kontrola prikayuje sliku u Zoom modu, da bi uvek bila prikazana na ekranu kako treba. Zato je moje sledeće pitanje: Kako podesiti i Bitmap-u u memoriji da bude ista kao i prikaz PictureBox kontrole?
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Gde je korisnik kliknuo ?18.11.2012. u 12:19 - pre 138 meseci
Nema potrebe da to radiš što hoćeš.
Dovoljno je da uradiš proporciju Width-a Bitmap-a i Width-a Picture Box-a (analogno i za Height-te).
Na osnovu tih proporcija sračunaš poziciju za GetPixel.

Pozdrav!

 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Gde je korisnik kliknuo ?

[ Pregleda: 1722 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.