Cyber X @ 06.07.2005. 14:27
Moze li neko da mi objasni kako da ucitam sliku u posebnu celiju DrawGrid-a?
Ili je mozda za to pogodniji StringGrid?
Ni u jednom ni u drugom ne znam to da izvedem :((
HELP !
Toyo @ 06.07.2005. 15:12
Na onDrawCell upises:
Code:
procedure TMain.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (Acol=0) and (arow=0) then
with (Sender as TDrawgrid) do
with canvas do
Draw(Rect.Left,Rect.top,image1.Picture.Graphic);
end;
Trebalo bi da je dobro (nisam proveravao).
Cyber X @ 06.07.2005. 16:15
Radi, ali...
Meni treba da se slika pojavi npr. na pritisak dugmeta, a to sa ovim kodom ne mogu da izvedem.
Srki_82 @ 06.07.2005. 16:22
Pa ti na pritisak dugmeta postavi neki flag (recimo ShowPictures := True) i ako je taj flag postavljen onda iscrtavaj slike.
Cyber X @ 06.07.2005. 16:32
Hmm... Verovatno treba da bolje pojasnim.
Meni treba ovo zato sto ponovo pravim igru "snake", ali na drugi nacim.
Ranije sam je pravio iscrtavanjem niza slika, a sad hocu da uradim istu stvar uz pomoc StringGrida/DrawGrida zbog manjeg koda i lakseg pravljenja nivoa.
Dakle ista slika ce trebati da se postavlja na vise mesta, a da se brise sa drugih...
E, sad, kad bi sve slike ucitao na pocetku, to i ne bi bilo bas prakticno.
Ili se varam ?
Na pamet mi je prvo pala ideja da menjam vrednosti za ACol i ARow, ali mi nije uspelo.
Any idea ?
Toyo @ 06.07.2005. 17:00
Pazi, kada se iscrtava grid, ta funkcija se poziva za svaku celiju zasebno znaci onoliko puta koliko imas kolona * redova. Ako bi uklonio proveru za row i acol i samo iscrtao sliku, ta slika bi bila u svim celijama.
U cells[arow, acol] drzi indekse slika koje treba da se iscrtaju i onda ih iscrtavas sa:
Draw(rect.left, rect.top, image[strtoint(cells[arow,acol])].Picture.graphic);
gde je image niz slika, ili mozes da koristis tpicturecollection.
Nadam se da si shvatio. :)
Srki_82 @ 06.07.2005. 17:03
Zasto komplikujes sa gridovima!?
Dovoljna ti je jedna matrica 50x50 (ili koliko vec hoces) u kojoj ces cuvati sta se nalazi u kom polju i posla samo na osnovu tih vrednosti iscrtas sliku na TBitmap.Canvas. To ce ti biti backbuffer i kad god je potrebno samo ga "pljunes" na formu ili neku komponentu (TImage, TPanel, TButton...) gde zelis da se vidi ta slika. Pogledaj moj primer
http://www.elitesecurity.org/poruka/547708 ili
http://www.elitesecurity.org/poruka/540770
Cyber X @ 11.07.2005. 10:38
Ok, hvala svima, mislim da cu uraditi sta sam zamislio.
Jos nisam radio sa matricama, ali cu uspeti da izvucem nesto iz Srkijevih programa :)
Copyright (C) 2001-2008 by www.elitesecurity.org. All rights reserved.