Rysowanie w komórce StringGrid

Rysowanie w komórce StringGrid
NO
  • Rejestracja:około 20 lat
  • Ostatnio:ponad 11 lat
  • Postów:55
0

Witam

Proszę o pomoc w sprawie rysowania w danej komórce komponentu StringGrid.
Stoję na poziomie rysowania po komponencie...

w DrawCell komponentu StringGrid mam taki kod:

Kopiuj
var
  temp : TJPEGImage;
Begin
  temp : TJPEGImage.Create;
  temp.LoadFromFile('obrazek.jpg');
  StringGrid1.Canvas.Draw(Rect.Top, Rect.Left, temp);
 

Tylko ze ja to mam porozwalane po całym komponencie a chce żeby ten obrazek wyświetlał się w konkretnej komórce...
Nie mogę sobie z tym poradzić... Może ktos wie jak rozwiązać problem?? Za pomoc wielkie dzięki :)
Pozdrawiam


<img src="http://signer.idn.net.pl/static/noroo.png" alt="user image" />
http://softdelphi.prv.pl - Strona Domowa Gieroteki (Program do katalogowania swojego spisu gier filmów muzy i programów)
Misiekd
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 13 lat
  • Postów:7923
0

ACol i ARow - nic Ci to nie mówi??


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
NO
  • Rejestracja:około 20 lat
  • Ostatnio:ponad 11 lat
  • Postów:55
0

Mówi mówi... :)
No ale nie do końca wiem jak mam to wykorzystać żeby obrazek był tylko w 1 komórce nie rozlewając się na inne.


<img src="http://signer.idn.net.pl/static/noroo.png" alt="user image" />
http://softdelphi.prv.pl - Strona Domowa Gieroteki (Program do katalogowania swojego spisu gier filmów muzy i programów)
NO
  • Rejestracja:około 20 lat
  • Ostatnio:ponad 11 lat
  • Postów:55
0

OK mam! :D
Może komuś się przyda

Kopiuj
var
  temp : TJPEGImage;
Begin
  temp : TJPEGImage.Create;
  temp.LoadFromFile('obrazek.jpg');
  StringGrid1.Canvas.StretchDraw(StringGrid1.CellRect(1,1), temp);
  temp.free
 

Rysuje dany obrazek w komórce 1,1
Dzięki za pomoc :)


<img src="http://signer.idn.net.pl/static/noroo.png" alt="user image" />
http://softdelphi.prv.pl - Strona Domowa Gieroteki (Program do katalogowania swojego spisu gier filmów muzy i programów)
Misiekd
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 13 lat
  • Postów:7923
0
Kopiuj
if (ACol = 1) and (ARow = 1) then
begin
  ...
  Canvas.CopyRect(Rect, temp.Canvas, Rect(0, 0, temp.Width, temp.Height));
end;

- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
edytowany 1x, ostatnio: Misiekd
cimak
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 9 lat
  • Postów:1668
0

przy kazdym rysowaniu tworzysz nowa zmienna i ladujesz obrazek z pliku???

edytowany 2x, ostatnio: cimak
Misiekd
tak jest bardzie pro... :)
cimak
a no racja, przepraszam ;D
Misiekd
ależ ja się wcale nie gniewam - zwracam tylko uwagę :)
NO
  • Rejestracja:około 20 lat
  • Ostatnio:ponad 11 lat
  • Postów:55
0

Ładuje obrazek
Rysuje
Zwalniam zmienną

za każdym razem ta sama zmienna "temp"


<img src="http://signer.idn.net.pl/static/noroo.png" alt="user image" />
http://softdelphi.prv.pl - Strona Domowa Gieroteki (Program do katalogowania swojego spisu gier filmów muzy i programów)
cimak
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 9 lat
  • Postów:1668
0
noroo napisał(a)

Ładuje obrazek
Rysuje
Zwalniam zmienną

za każdym razem ta sama zmienna "temp"

to ze to jest ta sama zmienna (chociaz nie jest) nic nie zmienia. wciaz niepotrzebnie tworzysz ja i zwalniasz.
zmienna powinna byc globalna - utworzona w onCreate (tam tez powinienes zaladowac obrazek) a zwolniona w onDestroy.
dodatkowo jesli obrazek bylby duzy powinienes wstepnie go zmniejszyc do jakis sensownych rozmiarow.

edytowany 3x, ostatnio: cimak

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.