Interactive drawing application using Delphi events to track
mouse movement and position
unit draw;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ginolib, math, StdCtrls, Spin;
type
TForm1 = class(TForm)
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
ComboBox1: TComboBox;
Label1: TLabel;
ComboBox2: TComboBox;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
private
bitmap : Tbitmap;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
myHdc,mynewHdc : Integer;
mynewdc,mywinHdc : HDC;
implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
begin
ControlStyle:=ControlStyle+ [csOpaque];
gFlushGraphics;
mynewHdc:=Integer(bitmap.canvas.Handle);
gMwinUpdateDC(mynewHdc);
canvas.draw(0,0,Bitmap);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Bitmap:=TBitmap.Create;
Bitmap.width:=600;
Bitmap.height:=400;
gOpenGino;
myHdc:=Integer(bitmap.canvas.handle);
gMwindc(GNULL,myHdc);
gDrawLineTo2D(50.0,50.0);
gDrawLineTo2D(20.0,30.0);
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
newp : GPOINT;
begin
gEnqPosofPixel(x,y,newp);
gDrawLineTo2D(newp.x,newp.y);
Invalidate;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
SpinEdit1.Value:=x;
SpinEdit2.Value:=y;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
gCloseGino;
Bitmap.Free;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
gSetLineColour(ComboBox1.ItemIndex+1);
Invalidate;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
gSetBrokenLine(ComboBox2.ItemIndex);
Invalidate;
end;
end.