Показать сообщение отдельно
  #4  
Старый 29.10.2016, 06:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 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.
Ответить с цитированием