Opdater billede

Tags:    delphi

Hej,
Jeg har et billede vist på skærmen - pixelværdierne ligger i et array (data). Jeg har en listbox med de forskellige pixelværdier der findes i billedet. Nu vil jeg gerne selv kunne vælge, hvilken farve en given pixelværdi skal repræsenteres med - og det skal styres via et klick i listboxen. Jeg har gjort sådan her:

procedure TMainForm.ListBox1DblClick(Sender: TObject);
var bitmap : Tbitmap; x, y, itemtext, n:integer; color: array of integer;
begin
setlength(color, 255);
Bitmap := TBitmap.Create;
if ListBox1.ItemIndex <> -1 then
ItemText:= StrToInt(listbox1.Items.strings[listbox1.ItemIndex]); {value of the item clicked on}
if ColorDialog1.Execute then color[itemtext] := ColorDialog1.Color;
try
Bitmap.Width:=GridSizeX;
Bitmap.Height:=GridSizeY;
for x:=0 to GridSizeX-1 do begin
for y:=0 to GridSizeY-1 do begin
for n:=0 to 255 do begin
if data.value[1,x,y] = n then bitmap.Canvas.pixels[x,y]:=color[n];
end;
end;
end;
MainImage.Picture.Bitmap:=Bitmap;
finally
Bitmap.Free
end;
end;
end.


Jeg kan godt opdatere én pixelværdi, men når jeg vælger farve på den næste værdi "nulstilles" billedet, og den farvetildeling jeg lige har foregaet forsvinder. Jeg er altså ude på, at give alle pixelværdier farver og vise det på skærmen.

Martin



1 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hej,
Jeg har et billede vist på skærmen - pixelværdierne ligger i et array (data). Blablablabla.....
Martin


1, 2, 3, krone for mig! Jeg har løst problemet, som var, at det array der holder farverne (color) bliver nulstillet for hvert gennemløb. Nu er det placeret udenfor rutinen og det spiller!
God weekend,
Martin

[Redigeret d. 16/01-04 14:01:36 af Martin]



t