[Lazarus] Image Copy and Load Fail.

Mattias Gaertner nc-gaertnma at netcologne.de
Thu Feb 25 11:57:19 CET 2016


On Thu, 25 Feb 2016 19:28:57 +0900 (KST)
최경식 <me357159 at naver.com> wrote:

>[...]
> procedure TForm1.Button3Click(Sender: TObject);
> var
>   ImagetoSave : TImage;
> begin
>   ImagetoSave := TImage.Create(Self);

A TImage is a visual control that uses a graphic (e.g. a TBitmap) to
paint.
If you only need a memory image use TBitmap directly instead.

This copies pixels (not attributes):

var
  ImagetoSave : TBitmap;
begin
  ImagetoSave := TBitmap.Create(Self);
  with ImagetoSave do
  begin
    PixelFormat := pf32bit;
    SetSize(Image1.Width,Image1.Height);
    Canvas.CopyRect(Rect(0,0,Image1.Width,Image1.Height),
    Image1.Picture.Bitmap.Canvas,
    Rect(0,0,Image1.Width,Image1.Height));
  end;
  ImagetoSave.SaveToFile('/home/user/Image/copycreate.bmp');
  FileListBox1.UpdateFileList;
end;


> procedure TForm1.FileListBox1Change(Sender: TObject);
> begin
>   if FileListBox1.ItemIndex <> -1 then
>   begin
>     //Loading
>     Image3.Picture.bitmap.TransParentColor := clGreen; //Valuable!

Hint:
If you also want to copy attributes like TransparentColor, use

ImagetoSave.Assign(Image1.Picture.Bitmap);

Mattias




More information about the Lazarus mailing list