home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / DELPHIX.ZIP / Samples / Graphic / AlphaBlending / Main.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-10-06  |  2.8 KB  |  114 lines

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   DXClass, ExtCtrls, DXDraws, StdCtrls;
  8.  
  9. type
  10.   TMainForm = class(TDXForm)
  11.     DXDraw: TDXDraw;
  12.     DXTimer: TDXTimer;
  13.     ImageList: TDXImageList;
  14.     procedure DXDrawInitialize(Sender: TObject);
  15.     procedure DXDrawFinalize(Sender: TObject);
  16.     procedure DXTimerTimer(Sender: TObject; LagCount: Integer);
  17.     procedure FormKeyDown(Sender: TObject; var Key: Word;
  18.       Shift: TShiftState);
  19.     procedure FormCreate(Sender: TObject);
  20.   private
  21.     FAngle: Integer;
  22.   end;
  23.  
  24. var
  25.   MainForm: TMainForm;
  26.  
  27. implementation
  28.  
  29. {$R *.DFM}
  30.  
  31. procedure TMainForm.DXDrawInitialize(Sender: TObject);
  32. begin
  33.   DXTimer.Enabled := True;
  34. end;
  35.                                         
  36. procedure TMainForm.DXDrawFinalize(Sender: TObject);
  37. begin
  38.   DXTimer.Enabled := False;
  39. end;
  40.  
  41. procedure TMainForm.DXTimerTimer(Sender: TObject; LagCount: Integer);
  42. begin
  43.   if not DXDraw.CanDraw then Exit;
  44.  
  45.   DXDraw.Surface.Fill(0);
  46.                                                           
  47.   ImageList.Items[0].DrawWaveX(DXDraw.Surface, 50, 30, 320, 90, 0, 2, 80, FAngle*4);
  48.  
  49.   ImageList.Items[0].DrawAdd(DXDraw.Surface, Bounds(80, 20, 128, 32),
  50.     0, Trunc(Cos256(FAngle)*126+127));
  51.                             
  52.   ImageList.Items[0].DrawAdd(DXDraw.Surface, Bounds(90, 30, 128, 32),
  53.     0, Trunc(Cos256(FAngle+128)*126+127));
  54.  
  55.   ImageList.Items[0].DrawRotateAlpha(DXDraw.Surface, DXDraw.Surface.Width div 2,
  56.     DXDraw.Surface.Height div 2, 320, 90, 0, 0.5, 0.5, FAngle, Trunc(Cos256(FAngle)*126+127));
  57.  
  58.   Inc(FAngle);
  59.  
  60.   with DXDraw.Surface.Canvas do
  61.   begin
  62.     Brush.Style := bsClear;
  63.     Font.Color := clWhite;
  64.     Font.Size := 12;
  65.     Textout(0, 0, 'FPS: '+inttostr(DXTimer.FrameRate));
  66.  
  67.     Release; {  Indispensability  }
  68.   end;
  69.  
  70.   DXDraw.Flip;
  71. end;
  72.  
  73. procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
  74.   Shift: TShiftState);
  75. begin
  76.   {  Application end  }
  77.   if Key=VK_ESCAPE then
  78.     Close;
  79.  
  80.   {  Screen mode change  }
  81.   if (ssAlt in Shift) and (Key=VK_RETURN) then
  82.   begin
  83.     DXDraw.Finalize;
  84.  
  85.     if doFullScreen in DXDraw.Options then
  86.     begin
  87.       RestoreWindow;
  88.  
  89.       DXDraw.Cursor := crDefault;
  90.       BorderStyle := bsSizeable;
  91.       DXDraw.Options := DXDraw.Options - [doFullScreen];
  92.     end else
  93.     begin
  94.       StoreWindow;
  95.  
  96.       DXDraw.Cursor := crNone;
  97.       BorderStyle := bsNone;
  98.       DXDraw.Options := DXDraw.Options + [doFullScreen];
  99.     end;
  100.  
  101.     DXDraw.Initialize;
  102.   end;
  103. end;
  104.  
  105. procedure TMainForm.FormCreate(Sender: TObject);
  106. begin
  107.   ImageList.Items.MakeColorTable;
  108.   DXDraw.ColorTable := ImageList.Items.ColorTable;
  109.   DXDraw.DefColorTable := ImageList.Items.ColorTable;
  110.   DXDraw.UpdatePalette;
  111. end;
  112.  
  113. end.
  114.