diff --git a/applications/fpvviewer/fpvv_drawer.pas b/applications/fpvviewer/fpvv_drawer.pas new file mode 100644 index 000000000..7f3c7b314 --- /dev/null +++ b/applications/fpvviewer/fpvv_drawer.pas @@ -0,0 +1,76 @@ +unit fpvv_drawer; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Controls, Graphics, LCLType; + +type + + { TFPVVDrawer } + + TFPVVDrawer = class(TCustomControl) + public + PosX, PosY: Integer; + Drawing: TBitmap; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure EraseBackground(DC: HDC); override; + procedure Paint; override; + procedure HandleKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure Clear; + end; + +implementation + +{ TFPVVDrawer } + +constructor TFPVVDrawer.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + Drawing := TBitmap.Create; + + OnKeyDown := @HandleKeyDown; +end; + +destructor TFPVVDrawer.Destroy; +begin + Drawing.Free; + inherited Destroy; +end; + +procedure TFPVVDrawer.EraseBackground(DC: HDC); +begin + +end; + +procedure TFPVVDrawer.Paint; +begin + Canvas.Draw(PosX, PosY, Drawing); +// inherited Paint; +end; + +procedure TFPVVDrawer.HandleKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + case Key of + VK_UP: Inc(PosY, 5); + VK_DOWN: Dec(PosY, 5); + VK_LEFT: Inc(PosX, 5); + VK_RIGHT: Dec(PosX, 5); + else + Exit; + end; + Invalidate(); +end; + +procedure TFPVVDrawer.Clear; +begin + PosX := 0; + PosY := 0; +end; + +end. +