cekaj..pretpostavljam da hoces da izvedes to sa ListBox-om (ili mozda sa ListView-om).
Ako je prvo onda moras sa OwnerDraw, evo uputstva pa se snadji dalje:
Stavi ListBox na formu i podesi mu ItemHeight na visinu thumbnaila
u OnDrawItem stavi:
Code:
with (Control As TListBox) do
begin
Canvas.FillRect(Rect);
VS.Draw(Canvas, Rect.Left, Rect.Top, Index, True);
end;
evo procedure za dodavanje thumbnaila u TImageList (koji se zove VS); To sam ja nesto radi programce za uporedjivanje JPG slicica i onda napravi thumbnail koji ima na sebi prvu slicicu levo pa izmedju njih text 'VS' i onda desno ide druga slicica...lako ces da prepravis da samo jednu crta. pisao sam i komentare, tako da ces se snaci
Code:
procedure TMainForm.AddImages(File1, File2: string);
var First, Second: TJpegImage;
Image: TBitmap;
X, Y: Integer;
InStream: TFileStream;
OutStream: TStream;
begin
Image := TBitmap.Create;
Image.Width := 220;
Image.Height := 80;
First := TJpegImage.Create;
First.LoadFromFile(File1);
Scale(First, X, Y);
//create thumbnail for first image
InStream:=TFileStream.Create(File1, fmOpenRead);
try
OutStream:=TMemoryStream.Create;
try
OutStream.Position := 0;
CreateThumbnail(InStream, OutStream, X, Y);
OutStream.Position := 0;
First.LoadFromStream(OutStream);
finally
OutStream.Free;
end;
finally
InStream.Free;
end;
Second := TJpegImage.Create;
Second.LoadFromFile(File2);
Scale(Second, X, Y);
//create thumbnail for second image
InStream:=TFileStream.Create(File2, fmOpenRead);
try
OutStream:=TMemoryStream.Create;
try
OutStream.Position := 0;
CreateThumbnail(InStream, OutStream, X, Y);
OutStream.Position := 0;
Second.LoadFromStream(OutStream);
finally
OutStream.Free;
end;
finally
InStream.Free;
end;
//draw first
Image.Canvas.Draw(2, 0, First);
Image.Canvas.TextOut(2, 64, ExtractFileName(File1));
//draw second
Image.Canvas.Draw(Image.Width - Second.Width + 2, 0, Second);
Image.Canvas.TextOut(Image.Width - Second.Width + 2, 64, ExtractFileName(File2));
//draw VS
Image.Canvas.Font.Size := 8;
Image.Canvas.Font.Style := [fsBold];
Image.Canvas.TextOut((Image.Width - Image.Canvas.TextWidth('VS')) div 2, 30, 'VS');
{First.SaveToFile('c:\test1.jpg');
Second.SaveToFile('c:\test2.jpg');
Image.SaveToFile('c:\test.jpg');}
//add to list
VS.Add(Image, nil);
//free memory
Second.Free;
First.Free;
Image.Free;
end;