unit uFrmMain;
{ lazarus finnlines färjan ; a jumalauta fan demo }
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, LCLType, ExtCtrls, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
render_timer: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure render_timerTimer(Sender: TObject);
private
scroll_text: String;
background: TPortableNetworkGraphic;
water: TPortableNetworkGraphic;
sun: TPortableNetworkGraphic;
boat: TPortableNetworkGraphic;
first_frame: Boolean;
scroller_x: LongInt;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{$R resources.rc}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
self.render_timer.Interval:= 20;
{ ... cut out resource loading here ... }
self.first_frame:=True;
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
{...}
end;
procedure TForm1.FormShow(Sender: TObject);
begin
self.WindowState:=wsFullScreen;
self.render_timer.enabled:=True;
end;
procedure TForm1.render_timerTimer(Sender: TObject);
var
cvs: TBitmap;
begin
cvs := TBitmap.Create;
cvs.SetSize(self.Canvas.Width, self.Canvas.Height);
cvs.Canvas.Font.Size:=50;
cvs.Canvas.Font.Color:=clYellow;
if (self.first_frame) then
begin
self.first_frame:=False;
self.scroller_x := round(cvs.Canvas.TextWidth(self.scroll_text) * 0.3);
end;
cvs.Canvas.Brush.Color:=clBlack;
cvs.Canvas.FillRect(0, 0, cvs.Width, cvs.Height);
cvs.Canvas.Draw(0, 0, self.background);
cvs.Canvas.Draw(self.Canvas.Width - self.sun.Width, 10, self.sun);
cvs.Canvas.Draw(0, self.Canvas.Height div 10, self.water);
cvs.Canvas.TextOut(self.scroller_x, self.Canvas.Height div 2, self.scroll_text);
self.scroller_x := self.scroller_x - 5;
self.Canvas.Draw(0, 0, cvs);
cvs.Free;
end;
end.