
29.10.2016, 06:51
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Ну очепятался местами.
Вот полный пример (Delphi 10.1 Berlin) со случайным заполнением массива:
Код:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
TInt2dArray = Array Of Array Of Integer;
function DrawImageByMatrix(A : TInt2dArray) : TBitmap;
var
I, J : Integer;
begin
Result := TBitmap.Create;
Result.Height := Length(A);
Result.Width := Length(A[Low(A)]);
Result.PixelFormat := pf24bit;
Result.Canvas.Brush.Color := clWhite;
Result.Canvas.FillRect(Rect(0,0,Result.Width,Result.Height));
For I := Low(A) To High(A) Do
For J := Low(A[i]) To High(A[i]) Do
Result.Canvas.Pixels[J,I] := TColor(A[I,J]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I, J : Integer;
A : TInt2dArray;
B : TBitmap;
begin
SetLength(A,Image1.Height,Image1.Width);
For I := Low(A) To High(A) Do
For J := Low(A[i]) To High(A[i]) Do
A[I,J] := Random(MaxInt);
B := DrawImageByMatrix(A);
If Not Assigned(Image1.Picture.Graphic)
Then Image1.Picture.Graphic := B
Else
Begin
Image1.Picture.Graphic.Assign(B);
B.Free;
End;
end;
end.
На форму просто "бросил" TImage и TButton.
|