{
CREATE A DIRECTOR BITMAP using THE DXLIB SCRIPT Class
  Tony Domigan http://www.domaj.com mailto:tony@domaj.com
  This Unit demonstrates:
   1. the creation Of a global script For use On Director
   2. the creation Of a new castmember (Of Type "bitmap"
   3. the assignment Of a bitmap To the new member
   4. the saving Of an offscreen bitmap To disk
  Comments, suggestions Or corrections?
  email me On tony@domaj.com Or visit my site And forums.
  For all DXLIB support the official address Is:
              http://www.delphixtra.comprocedure script3;

}
Unit createAbitmap;

Interface

Uses DXClasses, Windows, Graphics;

Type
  Tcreatebmp=Class(TDXScript)
  Protected
    Procedure ExecuteFunction(FunctionIndex:Cardinal; Const ArgList:IDXArgList;
      Const Result:IDXValue); override;
  Public
    Class Procedure GetScriptInfo(Var ScriptInfo:TDXScriptInfo); override;
    Class Procedure InitializeClass(Const Info:TDXInitializeClassInfo); override;
  End;

Implementation

Const
  CLSID_Script:TGUID='{15E118C1-DB6D-11D6-9139-004F4900150E}';

Var
aBitmap:TDXSymbol;

Class Procedure Tcreatebmp.GetScriptInfo(Var ScriptInfo:TDXScriptInfo);
Begin
  ScriptInfo.MessageTable:='xtra createbmp'#10+
     '* createbmp'#10;
End;

Class Procedure Tcreatebmp.InitializeClass(Const Info:TDXInitializeClassInfo);
Begin
aBitmap:=info.SymbolManager.CreateSymbol('BITMAP');
End;

Procedure Tcreatebmp.ExecuteFunction(FunctionIndex:Cardinal;
  Const ArgList:IDXArgList; Const Result:IDXValue);

Procedure createbmp;
  Var
    newBitmap : TBitMap;
    cast : IDXCast;
    member : IDXCastmember;
    unused : Integer;
  Begin
   //Default to the internal cast
   cast := movie.GetCastByIndex(1);
   // Get first free member slot
   unused := cast.FindFreeMemberIndex(1);
   // Create a bitmap member
   member := cast.CreateCastMember(unused,aBitmap);
   // Create an offscreen bitmap of a size to match our drawing
   newBitmap := TBitmap.Create;
   newBitmap.Width := 50;
   newBitmap.Height := 50;
   Try
    // Draw on the offscreen bitmap canvas
    with newBitmap Do Begin
     Canvas.Brush.Color := clRed;
     Canvas.Brush.Style := bsDiagCross;
     Canvas.Ellipse(0, 0, 50, 50);
    end;
    // Assign to offscreen botmap to the castmember
    member.media.SetBitmap(newBitmap.Handle,true);
    // Save the offscreen bitmap to disk
    // Note: we are not saving the member!
    newBitmap.SaveToFile('c:\createbmp.bmp');
   Finally
    // Destroy the offscreen bitmap
    newBitmap.Free;
    // Return the memberNum to Director
    result.Integer := unused;
   End;
End;
Begin
  Case FunctionIndex Of
  0: createbmp;
  End;
End;

Initialization
  RegisterDXClass(Tcreatebmp,CLSID_Script);
End.

[domaj: 09Oct02] Download the createABitmap.pas file or Download Unit and Director 8 demo