[ roberto555 @ 05.02.2007. 13:19 ] @
muči me što kad nešto nacrtam sve je OK, dok se recimo forma ne minimizira tj napravi refresh, tada mi se sve obriše, kako da zadržim to što je ucrtano sve dok sam ne poželim obrisat klikom na neki gumb?

hvala!
[ Shadowed @ 05.02.2007. 14:20 ] @
Crtaj po Bitmap-u, umesto direktno na PictureBox, a taj bitmap dodeli PictureBox-u.
[ roberto555 @ 05.02.2007. 15:37 ] @
thx.. nisam još probao večeras ću imam neke radnje trenutno na kompu, nego ja u tom picture box-u imam jednu sliku (pictrure box.image=slika)- po njoj crtam!, dal mi to onda mjenja stvar? ili je svejedno!?
[ aleksandarpopov @ 05.02.2007. 16:02 ] @
Pa napravi bitmap od te slike pa crtaj, kad si nacrtao, dodeli bitmap pictureboxu.
[ boomLM @ 05.02.2007. 16:25 ] @
Da... mozes i tako...
System.Drawing.Bitmap bitmapa = new System.Drawing.Bitmap(this.pictureBox1.Image);

zatim crtas po bitmapi...
i ponovo ucitas u pictureBox tj. pictureBox1.Image=bitmapa;

Mozes i da u okviru Paint
this.pictureBox1.Paint+=new PaintEventHandler(pictureBox1_Paint);
...
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
//kod za crtanje....
this.Invalidate(); //govori windowsu da prozor bude uvek ponovo iscrtan
}
pa da zatim dodas tj da u delu konstruktora tvoje forme znaci umesto dela "TODO"
dodas liniju:
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque,true);//obavezno inace ce da ti "blinka" tj nista ne iscrtava jer se Windows "pravi pametan" i iscrtava deo ponovo posle ponistavanja prozora.tj ovim ga teras da ne pokrece bojenje van OnPaint overrajda.
Ovaj kod ti preporucujem...
[ roberto555 @ 05.02.2007. 19:11 ] @
odlično,pomoglo,, zahvaljujem na brzoj pomoći,.,,
[ roberto555 @ 06.02.2007. 10:51 ] @
ej, bio sam brzoplet, kad sam napisao odlično sve radi :) radi ono što sam pitao (da mi se ne briše kod minimiziranja), al sad nešto drugo ne radi kako treba, prije sam napravio:

Graphic gr=pictureBox.CretaeGraphic();
gr.DrawRectangle( ... ); itd... al sam uglavnom crtao po PB-u

i sad sam tu na tom picture box-u kad sam pritisnuo miša (mouse_down) pa se onda u mouse_move 'crtao' pravkoutnik po tom PB kako sam ja vukao miša(ko kad na desktopu označuješ mišem ikone), a koordinate za taj proavkoutnik sam uzeo u mouse_down eventu e.X,e.Y, i onda tako u mouse_move isto i na temelju tog sam crtao taj proavokutnik sve dok nisam pustio miša mouse_up onda sam taj pravokutnik tako ostavio, no sad mi koordinate nisu dobre, tj. ne počne mi crtat taj provkoutnik od točke gdje sam kliknuo (gdje se okine mouse_down) nego malo dalje jer sad crtam po bitm. i kako vučem miša tako se prethodni pravokutnik ne briše nego se dobiva 'šuma' tih provokutnika, brisanje sam radio tako da sam napravio pictureBox.Refresh();, znači muči me to da mi se razilaze koordinate kad kliknem na picturebox-u negdje i kad crtam sa tim koord.po slici koja je postavljena za image PB-a,? <ne znam baš najbolje objasnit pa nadam se da je netko skužio što me muči----...>

hvala!
[ boomLM @ 06.02.2007. 14:47 ] @
1.Pozicija kursora je u odnosu na ekran (ajde da kazemo u odnosu na globalnu areu).tj Cursor.Position.X - this.Location.X bi trebalo da ti daje x koordinatu u odnosu na areu tvog prozora isto tako i sa y uradi.
2.Zasto ne koristis Graphics graf=Graphics.FromImage(image);//npr Image iz pictureBox-a pa po njemu crtas
a za ne brisanje pravougaonika...pokusaj da odradis kao sam ti savetovao ili prekontrolisi MouseUp event ili u MouseMove stavi svaki put refresh ili...
Inace imas odlican tutorijal o GDI+ na http://www.bobpowell.net sve sto ti treba...
Ako planiras da se bavis programiranjem obavezno prouci...
[ roberto555 @ 06.02.2007. 16:59 ] @
proučit ću ovo, pa radim i tako Graphic gr=Graphic.FromImage(slika u PB-u), i kad onda idem gr.DrawRectangle(tu stavim koordinate klika mišem na PB(u eventima pb-a ih uzmem) onda mi doalzi pokraj malo nego što sam kliknuo, onako sam radio prije Graphic gr=PB.CreateGraphic();- i onda je bilo OK sve osim toga što mi je grafika nestajala ako sam recimo minimizirao formu pa opet napreavio restore, a sad je to OK a muči me ovo,,, vidjet ću ovaj link,

ja u PB u image postavim neku sliku koju stavim tako da popuni cijeli PB, Streach (tako nešto se to zove), i napravim
Graphic gr=Graphic.FromImage(PB.Image);
//mouse down PB-a recimo
gr.DrawRectangle(e.X,e.Y,neka_sifirna,neka_duzina);

-i on mi to nacrta lijepo no ne počinje tu gdje sam kliknuo nego odmaknuto u desnu stranu malo, možda zato što sam 'raširio' sliku po cijelom PB-u, ... probat ću sad da bude ogrinal veličina!