[Delphi] Niedziałający Kod

0

Wywala mi błąd

procedure TForm1.FormCreate(Sender: TObject);
var
 ImageList : array [1..4, 1..5] of TBitmap;
 I, J: Integer;
 Frame: TBitmap;
begin
 Frame := TBitmap.Create;
 Frame.Canvas.Draw(- 4, -3, Image1.Picture.Bitmap);

 for I := 1 to 4 do
   for J := 1 to 5 do
     begin
       ImageList[I, J].Canvas.Draw(I * 110 - 2,J * 96 -2, Frame);
       ImageList[I, J].Height := 110;
       ImageList[I, J].Width := 96;
     end;
end;

Mam obrazek załadowany do Image1. Chce go podzielić na 20 części z tym że na Image1 te części są oddzielone paroma pixelami.

1

Nie tworzysz obiektów TBitmap w swoim ImageList.

0
procedure TForm1.FormCreate(Sender: TObject);
Var
 ImageList : Array [1..4, 1..5] of TBitmap;
 I, J: Integer;
 Frame: TBitmap;
Begin
 Frame := TBitmap.Create;
 Frame.Canvas.Draw(- 4, -3, Image1.Picture.Bitmap);
 For I := 1 To 4 Do
   For J := 1 To 5 Do
     Begin
       ImageList[I, J] := TBitmap.Create;
       ImageList[I, J].Canvas.Draw(I * 110 - 2,J * 96 -2, Frame);
       ImageList[I, J].Height := 110;
       ImageList[I, J].Width := 96;
     End;
End;

mnbvcX ma rację, tak powinno wyglądać.

0

Wiem że tak powinno być, ale i tak program nie działa tak jakbym chciał.

Image2.Picture.Bitmap := ImageList[StrToInt(Edit1.Text), StrToInt(Edit2.Text)];

A Image2 Jest cały czas białe, ale nie wiem czemu to białe ogranicza się do Height i Width jaką podałem w OnCreate formy

0

Wielkość bitmapy musisz ustalić przed Draw (musisz w końcu po czymś rysować a domyślnie bitmapa ma 0x0px).
EDIT//
A w pętli zamiast Draw raczej powinieneś użyć CopyRect

1 użytkowników online, w tym zalogowanych: 0, gości: 1