📄 brushp.pas
字号:
unit brushp;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, TB97Ctls, TB97, TB97Tlbr, lmdcombo,
lmdextcS, lmdstdcA, LMDFontComboBox, LMDCustomComboBox,
LMDCustomColorComboBox, LMDColorComboBox;
type
TDrawingTool = (dtLine, dtRectangle, dtEllipse, dtRoundRect, dtPencil, dtfill, dtText);
TBrushf = class(TForm)
Image1: TImage;
Toolbar971: TToolbar97;
ToolbarButton974: TToolbarButton97;
ToolbarButton975: TToolbarButton97;
ToolbarButton976: TToolbarButton97;
ToolbarButton978: TToolbarButton97;
ToolbarButton979: TToolbarButton97;
ToolbarButton9710: TToolbarButton97;
ToolbarButton9713: TToolbarButton97;
ToolbarButton9714: TToolbarButton97;
ToolbarButton9715: TToolbarButton97;
ToolbarButton9716: TToolbarButton97;
ToolbarButton9717: TToolbarButton97;
ToolbarButton9718: TToolbarButton97;
ToolbarButton9719: TToolbarButton97;
ToolbarButton9720: TToolbarButton97;
LMDColorComboBox1: TLMDColorComboBox;
LMDSpinEdit1: TLMDSpinEdit;
LMDColorComboBox2: TLMDColorComboBox;
LMDFontComboBox1: TLMDFontComboBox;
LMDSpinEdit2: TLMDSpinEdit;
procedure GetScreen(var bmp: TBitmap);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ToolbarButton9719Click(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1DblClick(Sender: TObject);
procedure ToolbarButton975Click(Sender: TObject);
procedure ToolbarButton9717Click(Sender: TObject);
procedure ToolbarButton9713Click(Sender: TObject);
procedure ToolbarButton9715Click(Sender: TObject);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ToolbarButton9710Click(Sender: TObject);
procedure ToolbarButton9718Click(Sender: TObject);
procedure ToolbarButton9714Click(Sender: TObject);
procedure ToolbarButton9716Click(Sender: TObject);
procedure ToolbarButton979Click(Sender: TObject);
procedure ToolbarButton9720Click(Sender: TObject);
procedure ToolbarButton978Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure LMDColorComboBox1Change(Sender: TObject);
procedure LMDSpinEdit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
BrushStyle: TBrushStyle;
PenStyle: TPenStyle;
PenWide: Integer;
Drawing: Boolean;
Origin, MovePt: TPoint;
DrawingTool: TDrawingTool;
CurrentFile: string;
procedure SaveStyles;
procedure RestoreStyles;
procedure DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
end;
var
Brushf: TBrushf;
implementation
var
bmpmap1: Tbitmap;
{$R *.DFM}
procedure TBrushf.SaveStyles;
begin
with Image1.Canvas do
begin
BrushStyle := Brush.Style;
PenStyle := Pen.Style;
PenWide := Pen.Width;
end;
end;
procedure TBrushf.RestoreStyles;
begin
with Image1.Canvas do
begin
Brush.Style := BrushStyle;
Pen.Style := PenStyle;
Pen.Width := PenWide;
end;
end;
procedure TBrushf.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
begin
with Image1.Canvas do
begin
Pen.Mode := AMode;
case DrawingTool of
dtLine:
begin
Image1.Canvas.MoveTo(TopLeft.X, TopLeft.Y);
Image1.Canvas.LineTo(BottomRight.X, BottomRight.Y);
end;
dtRectangle: Image1.Canvas.Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X,
BottomRight.Y);
{ dtFillRectangle: Image1.Canvas.Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X,
BottomRight.Y); }
dtEllipse: Image1.Canvas.Ellipse(Topleft.X, TopLeft.Y, BottomRight.X,
BottomRight.Y);
dtRoundRect: Image1.Canvas.RoundRect(TopLeft.X, TopLeft.Y, BottomRight.X,
BottomRight.Y, (TopLeft.X - BottomRight.X) div 2,
(TopLeft.Y - BottomRight.Y) div 2);
end;
end;
end;
procedure TBrushf.GetScreen(var bmp: TBitmap);
var
dc: integer;
c: TCanvas;
R: TRect;
begin
bmp := TBitmap.Create;
dc := GetWindowDC(0);
try
c := TCanvas.Create;
c.Handle := dc;
R := Rect(0, 0, Screen.Width, Screen.Height - 26);
bmp.Width := R.Right;
bmp.Height := R.Bottom;
bmp.Canvas.CopyRect(R, c, R);
c.Handle := 0;
c.Free;
finally
ReleaseDC(0, dc);
end;
end;
procedure TBrushf.FormCreate(Sender: TObject);
begin
{ top:=0;
left:=0;
height:=screen.height;
width:=screen.width;}
LMDFontComboBox1.SelectedFont := '宋体';
LMDColorComboBox1.SelectedColor:=clBlack;
LMDColorComboBox2.SelectedColor:=clBlack;
end;
procedure TBrushf.FormShow(Sender: TObject);
begin
top := 0;
left := 0;
height := screen.height;
width := screen.width;
bmpmap1 := TBitmap.Create;
GetScreen(bmpmap1);
Toolbar971.Top := 20;
Toolbar971.left := screen.Width - Toolbar971.Width - 20;
//获取图象
image1.Picture.Bitmap.Assign(bmpmap1);
bmpmap1.SaveToFile(ExtractFilePath(Application.EXEName) + 'temp.bmp');
//PaintBox1.Canvas.Draw(0,0,bmpmap1);
bmpmap1.free;
ToolbarButton975.Down := true;
DrawingTool := dtPencil;
Image1.Canvas.Pen.Width := 2;
Image1.Canvas.Brush.Color := clBlack;
end;
procedure TBrushf.ToolbarButton9719Click(Sender: TObject);
begin
deleteFile(ExtractFilePath(Application.EXEName) + 'temp.bmp');
close;
end;
procedure TBrushf.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
cooltext: string;
okflag: boolean;
begin
if DrawingTool = dtfill then
begin
Image1.Canvas.Brush.Color := LMDColorComboBox2.SelectedColor;
Image1.Canvas.Brush.Style := bsSolid;
Image1.Canvas.FillRect(rect(0, 0, image1.width, image1.height));
exit;
end;
if DrawingTool = dtText then
begin
cooltext := 'Text';
Image1.Canvas.Font.Name := LMDFontComboBox1.SelectedFont;
Image1.Canvas.Font.Size := round(LMDSpinEdit2.value);
Image1.Canvas.Font.Color := LMDColorComboBox1.SelectedColor;
okflag := inputquery('文字', '请输入文字:', cooltext);
if okflag then
Image1.Canvas.TextOut(x, y, cooltext);
exit;
end;
Drawing := True;
Image1.Canvas.MoveTo(X, Y);
Origin := Point(X, Y);
MovePt := Origin;
end;
procedure TBrushf.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Drawing then
begin
if DrawingTool = dtPencil then
begin
Image1.canvas.Lineto(x, y);
exit;
end;
DrawShape(Origin, MovePt, pmNotXor);
MovePt := Point(X, Y);
DrawShape(Origin, MovePt, pmNotXor);
end;
end;
procedure TBrushf.Image1DblClick(Sender: TObject);
begin
image1.Picture.LoadFromFile(ExtractFilePath(Application.EXEName) + 'temp.bmp');
Image1.Canvas.Pen.Color := LMDColorComboBox1.SelectedColor;
Image1.Canvas.Pen.Width := round(LMDSpinEdit1.value);
Image1.Canvas.Brush.Color := LMDColorComboBox2.SelectedColor;
if (ToolbarButton9714.Down) or (ToolbarButton9714.Down) or (ToolbarButton9714.Down) then
Image1.Canvas.Brush.Style := bsSolid
else
Image1.Canvas.Brush.Style := bsClear;
// isdown:=false;
end;
procedure TBrushf.ToolbarButton975Click(Sender: TObject);
begin
DrawingTool := dtPencil;
end;
procedure TBrushf.ToolbarButton9717Click(Sender: TObject);
begin
drawingtool := dtRectangle;
Image1.Canvas.Brush.Style := bsClear;
end;
procedure TBrushf.ToolbarButton9713Click(Sender: TObject);
begin
DrawingTool := dtEllipse;
Image1.Canvas.Brush.Style := bsClear;
end;
procedure TBrushf.ToolbarButton9715Click(Sender: TObject);
begin
DrawingTool := dtRoundRect;
Image1.Canvas.Brush.Style := bsClear;
end;
procedure TBrushf.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Drawing then
begin
if DrawingTool = dtPencil then
begin
DrawIng := false;
exit;
end;
DrawShape(Origin, Point(X, Y), pmCopy);
Drawing := False;
end;
end;
procedure TBrushf.ToolbarButton9710Click(Sender: TObject);
begin
DrawingTool := dtLine;
Image1.Canvas.Brush.Style := bsClear;
end;
procedure TBrushf.ToolbarButton9718Click(Sender: TObject);
begin
drawingtool := dtRectangle;
Image1.Canvas.Brush.Color := LMDColorComboBox2.SelectedColor;
Image1.Canvas.Brush.Style := bsSolid;
end;
procedure TBrushf.ToolbarButton9714Click(Sender: TObject);
begin
DrawingTool := dtEllipse;
Image1.Canvas.Brush.Color := LMDColorComboBox2.SelectedColor;
Image1.Canvas.Brush.Style := bsSolid;
end;
procedure TBrushf.ToolbarButton9716Click(Sender: TObject);
begin
DrawingTool := dtRoundRect;
Image1.Canvas.Brush.Color := LMDColorComboBox2.SelectedColor;
Image1.Canvas.Brush.Style := bsSolid;
end;
procedure TBrushf.ToolbarButton979Click(Sender: TObject);
begin
drawingTool := dtfill;
end;
procedure TBrushf.ToolbarButton9720Click(Sender: TObject);
begin
image1.Picture.LoadFromFile(ExtractFilePath(Application.EXEName) + 'temp.bmp');
Image1.Canvas.Pen.Color := LMDColorComboBox1.SelectedColor;
Image1.Canvas.Pen.Width := round(LMDSpinEdit1.value);
Image1.Canvas.Brush.Color := LMDColorComboBox2.SelectedColor;
if (ToolbarButton9714.Down) or (ToolbarButton9714.Down) or (ToolbarButton9714.Down) then
Image1.Canvas.Brush.Style := bsSolid
else
Image1.Canvas.Brush.Style := bsClear;
end;
procedure TBrushf.ToolbarButton978Click(Sender: TObject);
begin
drawingTool := dtText;
Image1.Canvas.Brush.Style := bsClear;
end;
procedure TBrushf.FormActivate(Sender: TObject);
begin
SetForegroundWindow(application.Handle);
// Toolbar971.Show;
end;
procedure TBrushf.LMDColorComboBox1Change(Sender: TObject);
begin
Image1.Canvas.Pen.Color := LMDColorComboBox1.SelectedColor;
end;
procedure TBrushf.LMDSpinEdit1Change(Sender: TObject);
begin
Image1.Canvas.Pen.Width := round(LMDSpinEdit1.value);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -