GDI+ image

Submitted by eLenka on 4 August, 2010 - 14:26
Using GDI+ for showing images SWF Flash

The example of embedding images of GIF, PNG, TIFF fomats to SWF using GDI+.

Source archive: gdiplus.zip (403 KB)

 

Sample works

 

Some sample source: 
 var OD: TOpenDialog;
     M: TFlashMovie;
     swf_name: string; 
begin
  OD := TOpenDialog.Create(nil);
  if OD.Execute then
    begin
      M := TFlashMovie.Create(0, 0, 10, 10, 1, scPix);
      M.Compressed := true;
      with M.AddShapeImage(OD.FileName) do
        begin
          M.Width := Bounds.Width div twips;
          M.Height := Bounds.Height div twips;
        end;
      M.PlaceObject(M.Shapes.Last, 1);
      M.ShowFrame;
      M.MakeStream;
      swf_name := ChangeFileExt(OD.FileName, '.swf');
      M.SaveToFile(swf_name);
      M.Free;
    end;
  OD.Free;
 
...
 
procedure LoadCustomImageProcedure(sender: TFlashImage; FileName: string);
  var
      EncoderID: TGUID;
      Mem: TMemoryStream;
      Adapt: TStreamAdapter;
      SrcImage: Pointer;
begin
  Mem := TMemoryStream.Create;
  Adapt := TStreamAdapter.Create(Mem);
  SrcImage := nil;
  try
    GdipLoadImageFromFileICM(PWideChar(WideString(FileName)), SrcImage);
    if GetEncoderClsid('image/bmp', EncoderID) > -1 then
    if GdipSaveImageToStream(SrcImage, (Adapt as IStream), @EncoderID, nil) = Ok then
       begin
         Mem.Position := 0;
         Sender.LoadDataFromStream(Mem);
       end;
  finally
    if SrcImage <> nil then GdipDisposeImage(SrcImage);
    Adapt := nil;
    Mem.Free;
  end;  
end;