[ Ajvan @ 21.11.2005. 12:39 ] @
Imam problem u Delphi-ju 7.
na formu postavim TImage komponentu i u nju ucitam bitmapu.
Na Canvas-u TImage komponente iscrtam krug ili pravougaonik
(Image1.Canvas.Ellipse(X1,Y1,X2,Y2))
Posle nekog vremena (bilo da je definisano tajmerom ili na neki dogadjaj) zelim da izbrisem iscrtanu elipsu i ponovo prikazem cistu bitmapu koju sam prvobitno ucitao.
kada probam Refresh metod na Canvas (Image1.Canvas.Refresh;) ne pomaze;Invalidate na pomaze; Repaint ili Refresh metod na TImage komponentu ne pomaze;
Jedino sto pomaze jeste ponovno ucitavanje slike (Image1.Picture.LoadFromFile(' '))
Da li neko ima ideju kako da ovo odradim bez ponovnog ucitavanja???
[ Srki_82 @ 21.11.2005. 15:37 ] @
TImage ucitava sliku i u sebi cuva podatke o njoj. Kada iscrtavas nesto preko Canvasa direktno menjas sliku koja je u memoriji i ne mozes vise da je vratis. Mozes uraditi nesto ovako:

1. Ucitas sliku u TPicture
2. Postavis TImage.Picture na sliku koju si ucitao
3. Menjas Image.Canvas
4. Ponovo postavljas Image.Picture na Picture koji si na pocetku ucitao
5. kraj programa... oslobadjas TPicture u kojoj je slika
[ Ajvan @ 22.11.2005. 14:14 ] @
Da...to sam uradio...u stvari ako sam te dobro razumeo...ono sto sam ja uradio je da sam postavio dve TImage komponente na formu sa istom bitmapom, jedna se vidi a druga ne. Pisem po Canvas-u vidljive i kad zelim da vratim prvobitni sadrzaj ucitam sliku iz druge - nevidljive TImage komponente (Image1.Picture := Image2.Picture).

To resava problem, samo nije mi jasno sta mislis pod tim menjas direktno sliku koja je u memoriji??? Ti promenis nesto iscrtavajuci po Canvas-u, ali kad ubijes aplikaciju i startujes je ponovo dobijas cistu sliku...sto znaci da on ima sadrzaj slike negde u memoriji i nije mi jasno zasto ne izvrsi Repaint slike kad to treba? No nije ni bitno, hvala na odgovoru u svakom slucaju...
pozdrav
[ Srki_82 @ 22.11.2005. 15:28 ] @
Recimo da je slika niz brojeva (zasto li mi je to palo na pamet) :)
U fajlu pise:
Code:
Fajl:
1111111111

Kad ucitas sliku u TImage tak komponenta rezervise memoriju u kojoj ce smestiti podatke o slici i kada ih ucita iz fajla u memoriji se nalazi:
Code:
Memorija:
1111111111

Kad je potrebno da se TImage iscrta na formi koristi se slika iz memorije. Znaci, slobodno mozes da menjas podatke u fajlu, ali to nece uticati na izgled slike koja je vec ucitana.
Kad koristis Canvas direktno menjas sliku u memoriji... dakle ti nesto iscrtas i onda se u memoriji nadje nesto ovako:
Code:
Memorija:
1212121212

Cim se slika promeni TImage sama uradi Repaint na formi i vidi se ono novo sto si crtao. Kad ti naknadno pozoves Repaint opet se samo iscrta to sto je u memoriji. Da bi mogao da vratis ono sto je bilo moras sam nekako da sacuvas proslo stanje.

Nadam se da sad razumes.