⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brushp.pas

📁 这是一个非常好的教师和学生沟通用的电子教室!
💻 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 + -