OK so I found Yakman's tutorial and it helped a little. I can draw on canvases but it only seems to work in a MouseMove event… I tried to paste the same code in an OnShow event and it didn't work. :(
Here's my code now:
program CanvasForm;
var
frmDesign : TForm;
procedure FormMouseMove(Sender : TObject; Shift : TShiftState; x , y : Integer);
begin
frmDesign.Canvas.Pen.Color := 255;
frmDesign.Canvas.Pen.Width := 5;
frmDesign.Canvas.MoveTo(x - 5, y - 5);
frmDesign.Canvas.LineTo(x, y);
end;
procedure FormOnShow(Sender: TObject);
begin
frmDesign.Canvas.Pen.Color := 255;
frmDesign.Canvas.Pen.Width := 5;
frmDesign.Canvas.MoveTo(0, 0);
frmDesign.Canvas.LineTo(55, 55);
end;
procedure InitForm;
begin
frmDesign := CreateForm;
with frmDesign do
begin
Position := poDesktopCenter;
Width := 350;
Height := 250;
Caption := 'Canvas Form';
Visible := False;
OnMouseMove:= @FormMouseMove;
OnShow := @FormOnShow;
end;
{frmDesign.Canvas.Brush.Style := bsSolid;
frmDesign.Canvas.Brush.Color := clRed;
frmDesign.Canvas.Rectangle(5, 5, 245, 245);}
//CopyCanvas( Canvas, frmDesign.Canvas, 1, -1, 300, 520, 0, 0, 315, 520);
//SafeDrawBitmap(BitmapFromString(100,100,''), frmDesign.Canvas, 0, 0);
end;
procedure SafeInitForm;
var
v : TVariantArray;
begin
SetArrayLength( v, 0 );
ThreadSafeCall( 'InitForm', v );
end;
procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;
procedure SafeShowFormModal;
var
v : TVariantArray;
begin
SetArrayLength( v, 0 );
ThreadSafeCall( 'ShowFormModal', v );
end;
begin
ClearDebug;
SafeInitForm;
SafeShowFormModal;
FreeForm( frmDesign );
end.
and no thank you. Id rather learn how to do it in scar than create a plugin.
~Ron