UnitPaintbrush.pas
上传用户:conquerdj
上传日期:2022-07-08
资源大小:417k
文件大小:27k
源码类别:

GDI/图象编程

开发平台:

Delphi

  1. unit UnitPaintbrush;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, ImgList, ComCtrls, ToolWin, StdCtrls, ExtCtrls, Menus, Buttons,
  6.   ExtDlgs,JPEG;
  7. type
  8.   TFormPaintbrush = class(TForm)
  9.     ToolBar1: TToolBar;
  10.     ToolButtonLine: TToolButton;
  11.     ToolButtonEllipse: TToolButton;
  12.     ToolButtonFEllipse: TToolButton;
  13.     ToolButtonRectangle: TToolButton;
  14.     ToolButtonFRectangle: TToolButton;
  15.     ToolButtonEraser: TToolButton;
  16.     ToolButtonPen: TToolButton;
  17.     ToolButtonArrow: TToolButton;
  18.     ToolButtonEnlarge: TToolButton;
  19.     ImageList1: TImageList;
  20.     ComboBoxWidth: TComboBox;
  21.     ColorBox: TColorBox;
  22.     MainMenu1: TMainMenu;
  23.     MenuFile: TMenuItem;
  24.     MenuNew: TMenuItem;
  25.     MenuSave: TMenuItem;
  26.     MenuOpen: TMenuItem;
  27.     MenuExit: TMenuItem;
  28.     N6: TMenuItem;
  29.     OpenPictureDialog1: TOpenPictureDialog;
  30.     SavePictureDialog1: TSavePictureDialog;
  31.     Panel1: TPanel;
  32.     ToolButtonEC: TToolButton;
  33.     ToolButtonChar: TToolButton;
  34.     ButtonPicture: TButton;
  35.     SpeedButtonDisplay: TSpeedButton;
  36.     FontDialog1: TFontDialog;
  37.     ToolButtonFont: TToolButton;
  38.     SpeedButtonRouter: TSpeedButton;
  39.     SpeedButtonSwitch: TSpeedButton;
  40.     ToolBar2: TToolBar;
  41.     ToolBar3: TToolBar;
  42.     ToolButtonCut: TToolButton;
  43.     ToolButtonEiminate: TToolButton;
  44.     ToolButtonOpen: TToolButton;
  45.     ToolButtonSave: TToolButton;
  46.     ToolButtonHelp: TToolButton;
  47.     SpeedButtonModem: TSpeedButton;
  48.     SpeedButtonCDROM: TSpeedButton;
  49.     SpeedButtonServer: TSpeedButton;
  50.     SpeedButtonDB: TSpeedButton;
  51.     SpeedButtonConcentrator: TSpeedButton;
  52.     SpeedButton1: TSpeedButton;
  53.     Shape1: TShape;
  54.     M1: TMenuItem;
  55.     N1: TMenuItem;
  56.     MenuPen: TMenuItem;
  57.     MenuChar: TMenuItem;
  58.     procedure FormShow(Sender: TObject);
  59.     procedure ToolButtonLineClick(Sender: TObject);
  60.     procedure ToolButtonEllipseClick(Sender: TObject);
  61.     procedure ToolButtonRectangleClick(Sender: TObject);
  62.     procedure ComboBoxWidthChange(Sender: TObject);
  63.     procedure ColorBoxChange(Sender: TObject);
  64.     procedure ToolButtonFEllipseClick(Sender: TObject);
  65.     procedure ToolButtonFRectangleClick(Sender: TObject);
  66.     procedure ToolButtonPenClick(Sender: TObject);
  67.     procedure ToolButtonCutClick(Sender: TObject);
  68.     procedure MenuNewClick(Sender: TObject);
  69.     procedure MenuSaveClick(Sender: TObject);
  70.     procedure MenuOpenClick(Sender: TObject);
  71.     procedure ToolButtonEraserClick(Sender: TObject);
  72.     procedure ToolButtonArrowClick(Sender: TObject);
  73.     procedure ToolButtonEnlargeClick(Sender: TObject);
  74.     procedure ToolButtonEiminateClick(Sender: TObject);
  75.     procedure MenuExitClick(Sender: TObject);
  76.     procedure ToolButtonECClick(Sender: TObject);
  77.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  78.     procedure ButtonPictureClick(Sender: TObject);
  79.     procedure SpeedButtonDisplayClick(Sender: TObject);
  80.     procedure ToolButtonCharClick(Sender: TObject);
  81.     procedure ToolButtonFontClick(Sender: TObject);
  82.     procedure SpeedButtonRouterClick(Sender: TObject);
  83.     procedure SpeedButtonSwitchClick(Sender: TObject);
  84.     procedure ToolButtonHelpClick(Sender: TObject);
  85.     procedure SpeedButtonModemClick(Sender: TObject);
  86.     procedure SpeedButtonCDROMClick(Sender: TObject);
  87.     procedure SpeedButtonServerClick(Sender: TObject);
  88.     procedure SpeedButtonDBClick(Sender: TObject);
  89.     procedure SpeedButtonConcentratorClick(Sender: TObject);
  90.     procedure SpeedButton1Click(Sender: TObject);
  91.     procedure MenuMainHelpClick(Sender: TObject);
  92.   private
  93.     { Private declarations }
  94.   public
  95.     { Public declarations }
  96.   end;
  97. var
  98.   FormPaintbrush: TFormPaintbrush;
  99.   //当前选择的工具
  100.   mType   : Integer;
  101.   //当前正在绘制的图元线宽
  102.   mDrawWidth  : Integer;
  103.   //当前正在绘制的图元颜色
  104.   mDrawColor  : TColor;
  105.   //鼠标点击鼠标点击“放大镜”的次数
  106.   mClick:Integer;
  107.   //鼠标点击鼠标点击“切换黑白板”的次数
  108.   mCNO:Integer;
  109.   //鼠标点击鼠标点击“图片”的次数
  110.   mCpno:Integer;
  111.   //修改标志,以便提醒用户保存文档
  112.   mModifyFlag :  Bool;
  113. implementation
  114. uses UnitFormCanvas,UnitTxt,UnitHelp;
  115. {$R *.dfm}
  116. procedure ScreenCapture(Bmp: TBitmap);
  117. var
  118.    DeskWnd: HWnd;
  119.    DeskDC: HDC;
  120.    DeskCv: TCanvas;
  121.    R: TRect;
  122.    W, H: Integer;
  123. begin
  124.    if Bmp = nil then Exit;
  125.    DeskWnd := GetDesktopWindow;
  126.    //获得桌面句柄
  127.    DeskDC := GetWindowDC(DeskWnd);
  128.    //创建画布
  129.    DeskCv := TCanvas.Create;
  130.    //设置画布的句柄
  131.    DeskCv.Handle := DeskDC;
  132.    //获得屏幕尺寸
  133.    //屏幕的宽
  134.    W := Screen.Width;
  135.    //屏幕的高
  136.    H := Screen.Height;
  137.    //整个屏幕区域
  138.    R := Bounds(0, 0, W, H);
  139.    try
  140.       //设置Bmp
  141.       Bmp.HandleType := bmDIB;
  142.       Bmp.PixelFormat := pf24Bit;
  143.       Bmp.Width := W;
  144.       Bmp.Height := H;
  145.       //设置拷贝模式
  146.       Bmp.Canvas.CopyMode := cmSrcCopy;
  147.       //把整个屏幕复制到BITMAP中
  148.       Bmp.Canvas.CopyRect(R, DeskCv, R);
  149.    finally
  150.        //释放CANVAS对象
  151.       DeskCv.Free;
  152.       //释放DC
  153.       ReleaseDC(DeskWnd, DeskDC);
  154.    end;
  155. end; 
  156. //响应屏幕画笔窗口的显示事件
  157. procedure TFormPaintbrush.FormShow(Sender: TObject);
  158. begin
  159.    //设置窗口显示的位置
  160.    FormPaintbrush.Left:=0;
  161.    FormPaintbrush.Top:=100;
  162.    //初始化变量
  163.    mClick:=0;
  164.    mCpno:=0;
  165.    mCNO:=0;
  166.    //将Panel1隐藏起来
  167.    Panel1.Visible:=false;
  168.    //字体工具变灰
  169.    ToolButtonFont.Enabled:=false;
  170.    //将桌面拷贝到 image1和Imagecopy中
  171.    ScreenCapture(FormCanvas.image1.Picture.Bitmap);
  172.    ScreenCapture(FormCanvas.Imagecopy.Picture.Bitmap);
  173.    //显示画布窗口
  174.    FormCanvas.Show;
  175.    //响应工具按扭“铅笔”的单击事件
  176.    ToolButtonPen.Click;
  177. end;
  178. //响应工具按扭“直线”的单击事件
  179. procedure TFormPaintbrush.ToolButtonLineClick(Sender: TObject);
  180. begin
  181.    //设置当前选择的工具为1(1代表直线)
  182.   mType:=1;
  183.   //工具条的down状态(即是否下压)
  184.   ToolButtonLine.Down:=true;
  185.   ToolButtonRectangle.Down:=false;
  186.   ToolButtonEllipse.Down:=false;
  187.   ToolButtonFEllipse.Down:=false;
  188.   ToolButtonFRectangle.Down:=false;
  189.   ToolButtonPen.Down:=false;
  190.   ToolButtonEraser.Down:=false;
  191.   ToolButtonArrow.Down:=false;
  192.   ToolButtonOpen.Down:=false;
  193.   ToolButtonSave.Down:=false;
  194.   ToolButtonCut.Down:=false;
  195.   ToolButtonEiminate.Down:=false;
  196.   ToolButtonHelp.Down:=false;
  197.   ToolButtonEC.Down:=false;
  198.   ToolButtonChar.Down:=false;
  199.   ToolButtonFont.Enabled:=false;
  200.   //设置光标为十字光标
  201.   FormCanvas.Cursor:=crArrow;
  202. end;
  203. //响应工具按扭“椭圆”的单击事件
  204. procedure TFormPaintbrush.ToolButtonEllipseClick(
  205.   Sender: TObject);
  206. begin
  207.   //设置当前选择的工具为3(3代表椭圆)
  208.    mType:=3;
  209.    //工具条的down状态(即是否下压)
  210.   ToolButtonLine.Down:=false;
  211.   ToolButtonRectangle.Down:=false;
  212.   ToolButtonEllipse.Down:=true;
  213.   ToolButtonFEllipse.Down:=false;
  214.   ToolButtonFRectangle.Down:=false;
  215.   ToolButtonPen.Down:=false;
  216.   ToolButtonEraser.Down:=false;
  217.   ToolButtonArrow.Down:=false;
  218.   ToolButtonOpen.Down:=false;
  219.   ToolButtonSave.Down:=false;
  220.   ToolButtonCut.Down:=false;
  221.   ToolButtonEiminate.Down:=false;
  222.   ToolButtonHelp.Down:=false;
  223.   ToolButtonEC.Down:=false;
  224.   ToolButtonChar.Down:=false;
  225.   ToolButtonFont.Enabled:=false;
  226.   //设置光标为十字光标
  227.   FormCanvas.Cursor:=crArrow;
  228. end;
  229. //响应工具按扭“矩形”的单击事件
  230. procedure TFormPaintbrush.ToolButtonRectangleClick(Sender: TObject);
  231. begin
  232.    //设置当前选择的工具为2(2代表矩形)
  233.    mType:=2;
  234.    //工具条的down状态(即是否下压)
  235.   ToolButtonLine.Down:=false;
  236.   ToolButtonRectangle.Down:=true;
  237.   ToolButtonEllipse.Down:=false;
  238.   ToolButtonFEllipse.Down:=false;
  239.   ToolButtonFRectangle.Down:=false;
  240.   ToolButtonPen.Down:=false;
  241.   ToolButtonEraser.Down:=false;
  242.   ToolButtonArrow.Down:=false;
  243.   ToolButtonOpen.Down:=false;
  244.   ToolButtonSave.Down:=false;
  245.   ToolButtonCut.Down:=false;
  246.   ToolButtonEiminate.Down:=false;
  247.   ToolButtonHelp.Down:=false;
  248.   ToolButtonEC.Down:=false;
  249.   ToolButtonChar.Down:=false;
  250.   ToolButtonFont.Enabled:=false;
  251.   //设置光标为十字光标
  252.   FormCanvas.Cursor:=crArrow;
  253. end;
  254. //响应复选框的改变事件
  255. procedure TFormPaintbrush.ComboBoxWidthChange(Sender: TObject);
  256. begin
  257.   //线宽设置为复选框的内容
  258.    mDrawWidth:=StrToInt(ComboBoxWidth.text);
  259. end;
  260. //响应颜色框的改变事件
  261. procedure TFormPaintbrush.ColorBoxChange(Sender: TObject);
  262. begin
  263.    //颜色设置为颜色框所选择的颜色
  264.    Shape1.Brush.Color:=ColorBox.Selected;
  265.    //设置绘图的颜色
  266.    mDrawColor:=Shape1.Brush.Color;
  267.    //设置字体的颜色
  268.    FormTxt.Edit1.Font.Color:=ColorBox.Selected;
  269. end;
  270. //响应工具按扭“带填充的椭圆”的单击事件
  271. procedure TFormPaintbrush.ToolButtonFEllipseClick(Sender: TObject);
  272. begin
  273.   //设置当前选择的工具为4(4代表带填充的椭圆)
  274.    mType:=4;
  275.    //工具条的down状态(即是否下压)
  276.   ToolButtonLine.Down:=false;
  277.   ToolButtonRectangle.Down:=false;
  278.   ToolButtonEllipse.Down:=false;
  279.   ToolButtonFEllipse.Down:=true;
  280.   ToolButtonFRectangle.Down:=false;
  281.   ToolButtonPen.Down:=false;
  282.   ToolButtonEraser.Down:=false;
  283.   ToolButtonArrow.Down:=false;
  284.   ToolButtonOpen.Down:=false;
  285.   ToolButtonSave.Down:=false;
  286.   ToolButtonCut.Down:=false;
  287.   ToolButtonEiminate.Down:=false;
  288.   ToolButtonHelp.Down:=false;
  289.   ToolButtonEC.Down:=false;
  290.   ToolButtonChar.Down:=false;
  291.   ToolButtonFont.Enabled:=false;
  292.   //设置光标为十字光标
  293.   FormCanvas.Cursor:=crArrow;
  294. end;
  295. //响应工具按扭“带填充矩形”的单击事件
  296. procedure TFormPaintbrush.ToolButtonFRectangleClick(Sender: TObject);
  297. begin
  298.   //设置当前选择的工具为5(5代表带填充的矩形)
  299.   mType:=5;
  300.   //工具条的down状态(即是否下压)
  301.   ToolButtonLine.Down:=false;
  302.   ToolButtonRectangle.Down:=false;
  303.   ToolButtonEllipse.Down:=false;
  304.   ToolButtonFEllipse.Down:=false;
  305.   ToolButtonFRectangle.Down:=true;
  306.   ToolButtonPen.Down:=false;
  307.   ToolButtonEraser.Down:=false;
  308.   ToolButtonArrow.Down:=false;
  309.   ToolButtonOpen.Down:=false;
  310.   ToolButtonSave.Down:=false;
  311.   ToolButtonCut.Down:=false;
  312.   ToolButtonEiminate.Down:=false;
  313.   ToolButtonHelp.Down:=false;
  314.   ToolButtonEC.Down:=false;
  315.   ToolButtonChar.Down:=false;
  316.   ToolButtonFont.Enabled:=false;
  317.   //设置光标为十字光标
  318.   FormCanvas.Cursor:=crArrow;
  319. end;
  320. //响应工具按扭“铅笔”的单击事件
  321. procedure TFormPaintbrush.ToolButtonPenClick(Sender: TObject);
  322. begin
  323.   //设置当前选择的工具为6(6代表铅笔工具)
  324.   mType:=6;
  325.   //工具条的down状态(即是否下压)
  326.   ToolButtonLine.Down:=false;
  327.   ToolButtonRectangle.Down:=false;
  328.   ToolButtonEllipse.Down:=false;
  329.   ToolButtonFEllipse.Down:=false;
  330.   ToolButtonFRectangle.Down:=false;
  331.   ToolButtonPen.Down:=true;
  332.   ToolButtonEraser.Down:=false;
  333.   ToolButtonArrow.Down:=false;
  334.   ToolButtonOpen.Down:=false;
  335.   ToolButtonSave.Down:=false;
  336.   ToolButtonCut.Down:=false;
  337.   ToolButtonEiminate.Down:=false;
  338.   ToolButtonHelp.Down:=false;
  339.   ToolButtonEC.Down:=false;
  340.   ToolButtonChar.Down:=false;
  341.   ToolButtonFont.Enabled:=false;
  342.   //设置光标为十字光标
  343.   FormCanvas.Cursor:=crArrow;
  344. end;
  345. //响应工具按扭“切换黑白板”的单击事件
  346. procedure TFormPaintbrush.ToolButtonCutClick(Sender: TObject);
  347. begin
  348.    //判断修改标志的状态,以提醒用户是否需要保存
  349.    if(mModifyFlag=true)then
  350.    begin
  351.      //显示保存提示框
  352.      if(MessageDlg('将改动保存到未命名?',
  353.        mtConfirmation,[mbYes,mbNo],0) =mrYes) then
  354.        //调用"保存"菜单的响应函数来保存文件
  355.        MenuSaveClick(Sender);
  356.        //设置修改状态
  357.        mModifyFlag:=false;
  358.    end;
  359.    //鼠标点击"切换黑白板"按钮的次数自增1
  360.    mCNO:=mCNO+1;
  361.    if(mCNO mod 3=1) then
  362.    begin
  363.      //将image1的颜色设置为黑色
  364.      FormCanvas.image1.Canvas.Brush.Color:=clblack;
  365.      FormCanvas.image1.Canvas.FillRect(FormCanvas.image1.ClientRect);
  366.    end
  367.    else if(mCNO mod 3=2) then
  368.    begin
  369.      //将image1的颜色设置为白色
  370.      FormCanvas.image1.Canvas.Brush.Color:=clwhite;
  371.      FormCanvas.image1.Canvas.FillRect(FormCanvas.image1.ClientRect);
  372.    end
  373.    else
  374.    //将image1恢复为原先的图片
  375.    FormCanvas.image1.Picture:=FormCanvas.imagecopy.Picture;
  376. end;
  377. //响应"新建"菜单
  378. procedure TFormPaintbrush.MenuNewClick(Sender: TObject);
  379. begin
  380.   //判断修改标志的状态,以提醒用户是否需要保存
  381.   if(mModifyFlag=true)then
  382.   begin
  383.     //显示保存提示框
  384.     if(MessageDlg('将改动保存到未命名?',
  385.        mtConfirmation,[mbYes,mbNo],0) =mrYes) then
  386.        //调用"保存"菜单的响应函数来保存文件
  387.        MenuSaveClick(Sender);
  388.     //设置修改状态
  389.     mModifyFlag:=false;
  390.   end;
  391.   //将最先桌面的图片拷贝到image1中
  392.   FormCanvas.image1.Picture:=FormCanvas.imagecopy.Picture;
  393. end;
  394. //响应"保存"菜单
  395. procedure TFormPaintbrush.MenuSaveClick(Sender: TObject);
  396. begin
  397.   //显示保存图片对话框,并且单击“确定”按钮,则...
  398.   if SavePictureDialog1.Execute() then
  399.   begin
  400.     //保存Image1图片
  401.     FormCanvas.Image1.Picture.Bitmap.SaveToFile(SavePictureDialog1.fileName);
  402.     //设置修改状态
  403.     mModifyFlag:=false;
  404.   end;
  405. end;
  406. //响应"打开"菜单
  407. procedure TFormPaintbrush.MenuOpenClick(Sender: TObject);
  408. var
  409.   rect:Trect;
  410. begin
  411.    //显示打开图片对话框
  412.    if OpenPictureDialog1.Execute() then
  413.       Bitmap.LoadFromFile(OpenPictureDialog1.Filename);
  414.    rect.Left:=0;
  415.    rect.Top:=0;
  416.    rect.Right:=FormCanvas.Image1.Width;
  417.    rect.Bottom:=FormCanvas.Image1.Height;
  418.    //判断修改标志的状态,以提醒用户是否需要保存
  419.    if(mModifyFlag=true)then
  420.    begin
  421.      //显示保存提示框
  422.      if(MessageDlg('将改动保存到未命名?',
  423.         mtConfirmation,[mbYes,mbNo],0) =mrYes) then
  424.         //调用"保存"菜单的响应函数来保存文件
  425.         MenuSaveClick(Sender);
  426.          //设置修改状态
  427.         mModifyFlag:=false;
  428.     end;
  429.     //将位图中的图象复制到画布中
  430.     FormCanvas.Image1.Canvas.CopyRect(rect,bitmap.Canvas,rect);
  431. end;
  432. //响应工具按扭“橡皮”的单击事件
  433. procedure TFormPaintbrush.ToolButtonEraserClick(Sender: TObject);
  434. begin
  435.   //设置当前选择的工具为为7(7代表橡皮工具)
  436.   mType:=7;
  437.   //工具条的down状态(即是否下压)
  438.   ToolButtonLine.Down:=false;
  439.   ToolButtonRectangle.Down:=false;
  440.   ToolButtonEllipse.Down:=false;
  441.   ToolButtonFEllipse.Down:=false;
  442.   ToolButtonFRectangle.Down:=false;
  443.   ToolButtonPen.Down:=false;
  444.   ToolButtonEraser.Down:=true;
  445.   ToolButtonArrow.Down:=false;
  446.   ToolButtonOpen.Down:=false;
  447.   ToolButtonSave.Down:=false;
  448.   ToolButtonCut.Down:=false;
  449.   ToolButtonEiminate.Down:=false;
  450.   ToolButtonHelp.Down:=false;
  451.   ToolButtonEC.Down:=false;
  452.   ToolButtonChar.Down:=false;
  453.   ToolButtonFont.Enabled:=false;
  454.   //设置光标为十字光标
  455.   FormCanvas.Cursor:=crHandPoint;
  456. end;
  457. //响应工具按扭“箭头”的单击事件
  458. procedure TFormPaintbrush.ToolButtonArrowClick(Sender: TObject);
  459. begin
  460.   //设置当前选择的工具为8(8代表箭头工具)
  461.   mType:=8;
  462.   //工具条的down状态(即是否下压)
  463.   ToolButtonLine.Down:=false;
  464.   ToolButtonRectangle.Down:=false;
  465.   ToolButtonEllipse.Down:=false;
  466.   ToolButtonFEllipse.Down:=false;
  467.   ToolButtonFRectangle.Down:=false;
  468.   ToolButtonPen.Down:=false;
  469.   ToolButtonEraser.Down:=false;
  470.   ToolButtonArrow.Down:=true;
  471.   ToolButtonOpen.Down:=false;
  472.   ToolButtonSave.Down:=false;
  473.   ToolButtonCut.Down:=false;
  474.   ToolButtonEiminate.Down:=false;
  475.   ToolButtonHelp.Down:=false;
  476.   ToolButtonEC.Down:=false;
  477.   ToolButtonChar.Down:=false;
  478.   ToolButtonFont.Enabled:=false;
  479.   //设置光标为十字光标
  480.   FormCanvas.Cursor:=crArrow;
  481. end;
  482. //响应工具按扭“放大镜”的单击事件
  483. procedure TFormPaintbrush.ToolButtonEnlargeClick(Sender: TObject);
  484. begin
  485.    //响应的次数增1
  486.    mClick:=mClick+1;
  487.    if mClick mod 2=1 then
  488.    begin
  489.      //工具条的down状态(即是否下压)
  490.      ToolButtonEnlarge.Down:=true;
  491.      //显示Image2
  492.      FormCanvas.Image2.Show;
  493.    end
  494.    else
  495.    begin
  496.      //工具条的down状态(即是否下压)
  497.      ToolButtonEnlarge.Down:=false;
  498.      //隐藏Image2
  499.      FormCanvas.Image2.Hide;
  500.    end;
  501. end;
  502. //响应工具按扭“清屏”的单击事件
  503. procedure TFormPaintbrush.ToolButtonEiminateClick(Sender: TObject);
  504. begin
  505.    //显示清屏提示框
  506.    //if(MessageDlg('确定要清空屏幕吗?',
  507.    //mtConfirmation,[mbYes,mbNo],0) =mrYes) then
  508.    begin
  509.      //如果屏幕处于桌面状态,则恢复桌面图片
  510.      if(mCNO mod 3=1) then
  511.      begin
  512.        FormCanvas.image1.Canvas.Brush.Color:=clblack;
  513.        FormCanvas.image1.Canvas.FillRect(FormCanvas.image1.ClientRect);
  514.      end
  515.      //如果屏幕处于白板状态,则恢复白板
  516.      else if(mCNO mod 3=2) then
  517.      begin
  518.        FormCanvas.image1.Canvas.Brush.Color:=clwhite;
  519.        FormCanvas.image1.Canvas.FillRect(FormCanvas.image1.ClientRect);
  520.      end
  521.      //如果屏幕处于黑板状态就恢复黑板
  522.      else
  523.      FormCanvas.image1.Picture:=FormCanvas.imagecopy.Picture;
  524.    end;
  525. end;
  526. //响应“退出”菜单
  527. procedure TFormPaintbrush.MenuExitClick(Sender: TObject);
  528. begin
  529.   //关闭窗口
  530.   close();
  531. end;
  532. //响应工具按扭“取色”的单击事件
  533. procedure TFormPaintbrush.ToolButtonECClick(Sender: TObject);
  534. begin
  535.   //设置当前选择的工具为10(10代表取色工具)
  536.   mType:=10;
  537.   //工具条的down状态(即是否下压)
  538.   ToolButtonLine.Down:=false;
  539.   ToolButtonRectangle.Down:=false;
  540.   ToolButtonEllipse.Down:=false;
  541.   ToolButtonFEllipse.Down:=false;
  542.   ToolButtonFRectangle.Down:=false;
  543.   ToolButtonPen.Down:=false;
  544.   ToolButtonEraser.Down:=false;
  545.   ToolButtonArrow.Down:=false;
  546.   ToolButtonOpen.Down:=false;
  547.   ToolButtonSave.Down:=false;
  548.   ToolButtonCut.Down:=false;
  549.   ToolButtonEiminate.Down:=false;
  550.   ToolButtonHelp.Down:=false;
  551.   ToolButtonEC.Down:=true;
  552.   ToolButtonChar.Down:=false;
  553.   ToolButtonFont.Enabled:=false;
  554. end;
  555. //响应窗口关闭事件
  556. procedure TFormPaintbrush.FormClose(Sender: TObject;
  557.   var Action: TCloseAction);
  558. begin
  559. {
  560.   //判断修改标志的状态,以提醒用户是否需要保存
  561.   if(mModifyFlag=true)then
  562.   begin
  563.     //显示保存提示框
  564.     if(MessageDlg('将改动保存到未命名?',
  565.        mtConfirmation,[mbYes,mbNo],0) =mrYes) then
  566.        //调用"保存"菜单的响应函数来保存文件
  567.        MenuSaveClick(Sender);
  568.     //设置修改状态
  569.     mModifyFlag:=false;
  570.   end;
  571.   }
  572. end;
  573. //响应“图片”按钮的单击事件
  574. procedure TFormPaintbrush.ButtonPictureClick(Sender: TObject);
  575. begin
  576.   //响应次数增1
  577.   mCpno:=mCpno+1;
  578.   //如果响应的次数为奇数
  579.   if(mCpno mod 2=1) then
  580.   begin
  581.     //显示Panel1
  582.     Panel1.Visible:=true;
  583.      //工具条的down状态(即是否下压)
  584.     ToolButtonLine.Down:=false;
  585.     ToolButtonRectangle.Down:=false;
  586.     ToolButtonEllipse.Down:=false;
  587.     ToolButtonFEllipse.Down:=false;
  588.     ToolButtonFRectangle.Down:=false;
  589.     ToolButtonPen.Down:=false;
  590.     ToolButtonEraser.Down:=false;
  591.     ToolButtonArrow.Down:=false;
  592.     ToolButtonOpen.Down:=false;
  593.     ToolButtonSave.Down:=false;
  594.     ToolButtonCut.Down:=false;
  595.     ToolButtonEiminate.Down:=false;
  596.     ToolButtonHelp.Down:=false;
  597.     ToolButtonEC.Down:=false;
  598.     ToolButtonChar.Down:=false;
  599.     ToolButtonFont.Enabled:=false;
  600.   end
  601.   //如果响应的次数为偶数,那么隐藏Panel1
  602.   else Panel1.Visible:=false;
  603. end;
  604. //响应按扭“显示器”的单击事件
  605. procedure TFormPaintbrush.SpeedButtonDisplayClick(Sender: TObject);
  606. begin
  607.     //设置当前选择的工具为11
  608.     mType:=11;
  609.     //工具条的down状态(即是否下压)
  610.     ToolButtonLine.Down:=false;
  611.     ToolButtonRectangle.Down:=false;
  612.     ToolButtonEllipse.Down:=false;
  613.     ToolButtonFEllipse.Down:=false;
  614.     ToolButtonFRectangle.Down:=false;
  615.     ToolButtonPen.Down:=false;
  616.     ToolButtonEraser.Down:=false;
  617.     ToolButtonArrow.Down:=false;
  618.     ToolButtonOpen.Down:=false;
  619.     ToolButtonSave.Down:=false;
  620.     ToolButtonCut.Down:=false;
  621.     ToolButtonEiminate.Down:=false;
  622.     ToolButtonHelp.Down:=false;
  623.     ToolButtonEC.Down:=false;
  624.     ToolButtonChar.Down:=false;
  625.     //设置光标为十字光标
  626.     FormCanvas.Cursor:=crArrow;
  627. end;
  628. //响应工具按扭“文字”的单击事件
  629. procedure TFormPaintbrush.ToolButtonCharClick(Sender: TObject);
  630. begin
  631.   //清空Edit1的text
  632.   FormTxt.Edit1.Clear;
  633.   //设置当前选择的工具为12
  634.   mType:=12;
  635.   //工具条的down状态(即是否下压)
  636.   ToolButtonLine.Down:=false;
  637.   ToolButtonRectangle.Down:=false;
  638.   ToolButtonEllipse.Down:=false;
  639.   ToolButtonFEllipse.Down:=false;
  640.   ToolButtonFRectangle.Down:=false;
  641.   ToolButtonPen.Down:=false;
  642.   ToolButtonEraser.Down:=false;
  643.   ToolButtonArrow.Down:=false;
  644.   ToolButtonOpen.Down:=false;
  645.   ToolButtonSave.Down:=false;
  646.   ToolButtonCut.Down:=false;
  647.   ToolButtonEiminate.Down:=false;
  648.   ToolButtonHelp.Down:=false;
  649.   ToolButtonEC.Down:=false;
  650.   ToolButtonChar.Down:=true;
  651.   ToolButtonFont.Enabled:=true;
  652.   //设置鼠标的形状
  653.   FormCanvas.Cursor:=crIBeam;
  654.   //设置初始字体的颜色
  655.   FormTxt.Edit1.Font.Color:=shape1.Brush.Color;
  656.   FormTxt.Edit1.Font.Name:='黑体';
  657. end;
  658. //响应工具按扭“字体”的单击事件
  659. procedure TFormPaintbrush.ToolButtonFontClick(Sender: TObject);
  660. begin
  661.   //显示标准颜色对话框
  662.   if FontDialog1.Execute() then
  663.   begin
  664.     //将Edit1的字体设置为字体对话框的字体
  665.     FormTxt.Edit1.Font.Charset:=FontDialog1.Font.Charset;
  666.     FormTxt.Edit1.Font.Color:=FontDialog1.Font.Color;
  667.     FormTxt.Edit1.Font.Size:=FontDialog1.Font.Size;
  668.     FormTxt.Edit1.Font.Name:=FontDialog1.Font.Name;
  669.     FormTxt.Edit1.Font.Pitch:=FontDialog1.Font.Pitch;
  670.     FormTxt.Edit1.Font.Height:=FontDialog1.Font.Height;
  671.     FormTxt.Edit1.Font.Style:=FontDialog1.Font.Style;
  672.   end;
  673.   //将选择的颜色在颜色框和Shape1中显示出来
  674.   ColorBox.Selected:=FontDialog1.Font.Color;
  675.   Shape1.Brush.Color:=ColorBox.Selected;
  676.   //设置绘图颜色
  677.   mDrawColor:=Shape1.Brush.Color;
  678.   //将文字输入窗口隐藏
  679.   FormTxt.Hide;
  680. end;
  681. //响应按扭“路由器”的单击事件
  682. procedure TFormPaintbrush.SpeedButtonRouterClick(Sender: TObject);
  683. begin
  684.     //设置当前选择的工具为13
  685.     mType:=13;
  686.     //工具条的down状态(即是否下压)
  687.     ToolButtonLine.Down:=false;
  688.     ToolButtonRectangle.Down:=false;
  689.     ToolButtonEllipse.Down:=false;
  690.     ToolButtonFEllipse.Down:=false;
  691.     ToolButtonFRectangle.Down:=false;
  692.     ToolButtonPen.Down:=false;
  693.     ToolButtonEraser.Down:=false;
  694.     ToolButtonArrow.Down:=false;
  695.     ToolButtonOpen.Down:=false;
  696.     ToolButtonSave.Down:=false;
  697.     ToolButtonCut.Down:=false;
  698.     ToolButtonEiminate.Down:=false;
  699.     ToolButtonHelp.Down:=false;
  700.     ToolButtonEC.Down:=false;
  701.     ToolButtonChar.Down:=false;
  702.     ToolButtonFont.Enabled:=false;
  703.     //设置光标为十字光标
  704.     FormCanvas.Cursor:=crArrow;
  705. end;
  706. //响应按扭“交换机”的单击事件
  707. procedure TFormPaintbrush.SpeedButtonSwitchClick(Sender: TObject);
  708. begin
  709.     //设置当前选择的工具为14
  710.     mType:=14;
  711.     //工具条的down状态(即是否下压)
  712.     ToolButtonLine.Down:=false;
  713.     ToolButtonRectangle.Down:=false;
  714.     ToolButtonEllipse.Down:=false;
  715.     ToolButtonFEllipse.Down:=false;
  716.     ToolButtonFRectangle.Down:=false;
  717.     ToolButtonPen.Down:=false;
  718.     ToolButtonEraser.Down:=false;
  719.     ToolButtonArrow.Down:=false;
  720.     ToolButtonOpen.Down:=false;
  721.     ToolButtonSave.Down:=false;
  722.     ToolButtonCut.Down:=false;
  723.     ToolButtonEiminate.Down:=false;
  724.     ToolButtonHelp.Down:=false;
  725.     ToolButtonEC.Down:=false;
  726.     ToolButtonChar.Down:=false;
  727.     ToolButtonFont.Enabled:=false;
  728.     //设置光标为十字光标
  729.     FormCanvas.Cursor:=crArrow;
  730. end;
  731. //响应工具按扭“帮助”的单击事件
  732. procedure TFormPaintbrush.ToolButtonHelpClick(Sender: TObject);
  733. begin
  734.   //显示关于屏幕画笔窗口
  735.   FormAbout.Show;
  736. end;
  737. //响应按扭“调制解调器”的单击事件
  738. procedure TFormPaintbrush.SpeedButtonModemClick(Sender: TObject);
  739. begin
  740.     //设置当前选择的工具为15
  741.     mType:=15;
  742.     //工具条的down状态(即是否下压)
  743.     ToolButtonLine.Down:=false;
  744.     ToolButtonRectangle.Down:=false;
  745.     ToolButtonEllipse.Down:=false;
  746.     ToolButtonFEllipse.Down:=false;
  747.     ToolButtonFRectangle.Down:=false;
  748.     ToolButtonPen.Down:=false;
  749.     ToolButtonEraser.Down:=false;
  750.     ToolButtonArrow.Down:=false;
  751.     ToolButtonOpen.Down:=false;
  752.     ToolButtonSave.Down:=false;
  753.     ToolButtonCut.Down:=false;
  754.     ToolButtonEiminate.Down:=false;
  755.     ToolButtonHelp.Down:=false;
  756.     ToolButtonEC.Down:=false;
  757.     ToolButtonChar.Down:=false;
  758.     ToolButtonFont.Enabled:=false;
  759.     //设置光标为十字光标
  760.     FormCanvas.Cursor:=crArrow;
  761. end;
  762. //响应按扭“光驱”的单击事件
  763. procedure TFormPaintbrush.SpeedButtonCDROMClick(Sender: TObject);
  764. begin
  765.     //设置当前选择的工具为16
  766.     mType:=16;
  767.     //工具条的down状态(即是否下压)
  768.     ToolButtonLine.Down:=false;
  769.     ToolButtonRectangle.Down:=false;
  770.     ToolButtonEllipse.Down:=false;
  771.     ToolButtonFEllipse.Down:=false;
  772.     ToolButtonFRectangle.Down:=false;
  773.     ToolButtonPen.Down:=false;
  774.     ToolButtonEraser.Down:=false;
  775.     ToolButtonArrow.Down:=false;
  776.     ToolButtonOpen.Down:=false;
  777.     ToolButtonSave.Down:=false;
  778.     ToolButtonCut.Down:=false;
  779.     ToolButtonEiminate.Down:=false;
  780.     ToolButtonHelp.Down:=false;
  781.     ToolButtonEC.Down:=false;
  782.     ToolButtonChar.Down:=false;
  783.     ToolButtonFont.Enabled:=false;
  784.     //设置光标为十字光标
  785.     FormCanvas.Cursor:=crArrow;
  786. end;
  787. //响应按扭“服务器”的单击事件
  788. procedure TFormPaintbrush.SpeedButtonServerClick(Sender: TObject);
  789. begin
  790.     //设置当前选择的工具为17
  791.     mType:=17;
  792.     //工具条的down状态(即是否下压)
  793.     ToolButtonLine.Down:=false;
  794.     ToolButtonRectangle.Down:=false;
  795.     ToolButtonEllipse.Down:=false;
  796.     ToolButtonFEllipse.Down:=false;
  797.     ToolButtonFRectangle.Down:=false;
  798.     ToolButtonPen.Down:=false;
  799.     ToolButtonEraser.Down:=false;
  800.     ToolButtonArrow.Down:=false;
  801.     ToolButtonOpen.Down:=false;
  802.     ToolButtonSave.Down:=false;
  803.     ToolButtonCut.Down:=false;
  804.     ToolButtonEiminate.Down:=false;
  805.     ToolButtonHelp.Down:=false;
  806.     ToolButtonEC.Down:=false;
  807.     ToolButtonChar.Down:=false;
  808.     ToolButtonFont.Enabled:=false;
  809.     //设置光标为十字光标
  810.     FormCanvas.Cursor:=crArrow;
  811. end;
  812. //响应按扭“数据库”的单击事件
  813. procedure TFormPaintbrush.SpeedButtonDBClick(Sender: TObject);
  814. begin
  815.     //设置当前选择的工具为18
  816.     mType:=18;
  817.     //工具条的down状态(即是否下压)
  818.     ToolButtonLine.Down:=false;
  819.     ToolButtonRectangle.Down:=false;
  820.     ToolButtonEllipse.Down:=false;
  821.     ToolButtonFEllipse.Down:=false;
  822.     ToolButtonFRectangle.Down:=false;
  823.     ToolButtonPen.Down:=false;
  824.     ToolButtonEraser.Down:=false;
  825.     ToolButtonArrow.Down:=false;
  826.     ToolButtonOpen.Down:=false;
  827.     ToolButtonSave.Down:=false;
  828.     ToolButtonCut.Down:=false;
  829.     ToolButtonEiminate.Down:=false;
  830.     ToolButtonHelp.Down:=false;
  831.     ToolButtonEC.Down:=false;
  832.     ToolButtonChar.Down:=false;
  833.     ToolButtonFont.Enabled:=false;
  834.     //设置光标为十字光标
  835.     FormCanvas.Cursor:=crArrow;
  836. end;
  837. //响应按扭“集线器”的单击事件
  838. procedure TFormPaintbrush.SpeedButtonConcentratorClick(Sender: TObject);
  839. begin
  840.     //设置当前选择的工具为19
  841.     mType:=19;
  842.     //工具条的down状态(即是否下压)
  843.     ToolButtonLine.Down:=false;
  844.     ToolButtonRectangle.Down:=false;
  845.     ToolButtonEllipse.Down:=false;
  846.     ToolButtonFEllipse.Down:=false;
  847.     ToolButtonFRectangle.Down:=false;
  848.     ToolButtonPen.Down:=false;
  849.     ToolButtonEraser.Down:=false;
  850.     ToolButtonArrow.Down:=false;
  851.     ToolButtonOpen.Down:=false;
  852.     ToolButtonSave.Down:=false;
  853.     ToolButtonCut.Down:=false;
  854.     ToolButtonEiminate.Down:=false;
  855.     ToolButtonHelp.Down:=false;
  856.     ToolButtonEC.Down:=false;
  857.     ToolButtonChar.Down:=false;
  858.     ToolButtonFont.Enabled:=false;
  859.     //设置光标为十字光标
  860.     FormCanvas.Cursor:=crArrow;
  861. end;
  862. procedure TFormPaintbrush.SpeedButton1Click(Sender: TObject);
  863. begin
  864.     //设置当前选择的工具为20
  865.     mType:=20;
  866.     //工具条的down状态(即是否下压)
  867.     ToolButtonLine.Down:=false;
  868.     ToolButtonRectangle.Down:=false;
  869.     ToolButtonEllipse.Down:=false;
  870.     ToolButtonFEllipse.Down:=false;
  871.     ToolButtonFRectangle.Down:=false;
  872.     ToolButtonPen.Down:=false;
  873.     ToolButtonEraser.Down:=false;
  874.     ToolButtonArrow.Down:=false;
  875.     ToolButtonOpen.Down:=false;
  876.     ToolButtonSave.Down:=false;
  877.     ToolButtonCut.Down:=false;
  878.     ToolButtonEiminate.Down:=false;
  879.     ToolButtonHelp.Down:=false;
  880.     ToolButtonEC.Down:=false;
  881.     ToolButtonChar.Down:=false;
  882.     ToolButtonFont.Enabled:=false;
  883.     //设置光标为十字光标
  884.     FormCanvas.Cursor:=crArrow;
  885. end;
  886. procedure TFormPaintbrush.MenuMainHelpClick(Sender: TObject);
  887. begin
  888.     //导入帮助文件
  889.     Application.HelpFile:='D:屏幕画笔帮助.HLP';
  890.     //显示帮助文件目录
  891.     Application.HelpCommand(HELP_Index,0);
  892. end;
  893. end.