delphi写一个绘图板程序
时间: 2023-09-25 13:13:32 浏览: 52
好的,以下是一个简单的绘图板程序的 Delphi 代码:
```
unit MainForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TfrmMain = class(TForm)
pnlCanvas: TPanel;
btnClear: TButton;
btnExit: TButton;
btnSave: TButton;
dlgSave: TSaveDialog;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure pnlCanvasMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure pnlCanvasMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure pnlCanvasMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure btnClearClick(Sender: TObject);
procedure btnExitClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
private
FMouseDown: Boolean;
FStartPoint: TPoint;
FEndPoint: TPoint;
FCanvas: TCanvas;
procedure DrawLine;
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
FCanvas := pnlCanvas.Canvas;
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
FCanvas.Free;
end;
procedure TfrmMain.pnlCanvasMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FMouseDown := True;
FStartPoint := Point(X, Y);
end;
procedure TfrmMain.pnlCanvasMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if FMouseDown then
begin
FEndPoint := Point(X, Y);
DrawLine;
FStartPoint := FEndPoint;
end;
end;
procedure TfrmMain.pnlCanvasMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FMouseDown := False;
end;
procedure TfrmMain.DrawLine;
begin
with FCanvas do
begin
Pen.Color := clBlack;
Pen.Width := 2;
MoveTo(FStartPoint.X, FStartPoint.Y);
LineTo(FEndPoint.X, FEndPoint.Y);
end;
end;
procedure TfrmMain.btnClearClick(Sender: TObject);
begin
FCanvas.Brush.Color := clWhite;
FCanvas.FillRect(pnlCanvas.ClientRect);
end;
procedure TfrmMain.btnExitClick(Sender: TObject);
begin
Close;
end;
procedure TfrmMain.btnSaveClick(Sender: TObject);
begin
if dlgSave.Execute then
pnlCanvas.Canvas.SaveToFile(dlgSave.FileName);
end;
end.
```
这个程序使用 `TPanel` 作为画布,处理了鼠标的按下、移动和松开事件,通过 `TCanvas` 绘制直线,并可以清除画布和保存绘制结果。