Advertisement
Guest User

Untitled

a guest
May 21st, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 14.73 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, ColorGrd, ComCtrls, StdCtrls, Buttons, ExtCtrls, Menus, ExtDlgs;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     mm1: TMainMenu;
  12.     mmiFile: TMenuItem;
  13.     mmiCreate: TMenuItem;
  14.     mmiOpen: TMenuItem;
  15.     mmiSave: TMenuItem;
  16.     mmiSaveAs: TMenuItem;
  17.     mmiExit: TMenuItem;
  18.     mmiStep: TMenuItem;
  19.     pnl1: TPanel;
  20.     btn1: TSpeedButton;
  21.     btn2: TSpeedButton;
  22.     btn3: TSpeedButton;
  23.     btn4: TSpeedButton;
  24.     btn5: TSpeedButton;
  25.     btn6: TSpeedButton;
  26.     btn7: TSpeedButton;
  27.     btn8: TSpeedButton;
  28.     edt1: TEdit;
  29.     ud1: TUpDown;
  30.     pnl2: TPanel;
  31.     clrgrd1: TColorGrid;
  32.     bvl1: TBevel;
  33.     pnl3: TPanel;
  34.     pnl4: TPanel;
  35.     scrlbx1: TScrollBox;
  36.     img1: TImage;
  37.     stat1: TStatusBar;
  38.     dlgOPic1: TOpenPictureDialog;
  39.     dlg1: TSavePictureDialog;
  40.     lbl1: TLabel;
  41.     img2: TImage;
  42.     img3: TImage;
  43.     mmiStepBack: TMenuItem;
  44.     mmiStepForward: TMenuItem;
  45.     N9: TMenuItem;
  46.     mmiWipeOff: TMenuItem;
  47.     mmiSize: TMenuItem;
  48.     mmiHelp: TMenuItem;
  49.     mmiAboutDeveloper: TMenuItem;
  50.     btnRoundRect: TSpeedButton;
  51.     procedure FormCreate(Sender: TObject);
  52.     procedure mmiOpenClick(Sender: TObject);
  53.     procedure ud1Click(Sender: TObject; Button: TUDBtnType);
  54.     procedure clrgrd1Change(Sender: TObject);
  55.     procedure btn1MouseMove(Sender: TObject; Shift: TShiftState; X,
  56.       Y: Integer);
  57.     procedure btn2MouseMove(Sender: TObject; Shift: TShiftState; X,
  58.       Y: Integer);
  59.     procedure btn3MouseMove(Sender: TObject; Shift: TShiftState; X,
  60.       Y: Integer);
  61.     procedure btn4MouseMove(Sender: TObject; Shift: TShiftState; X,
  62.       Y: Integer);
  63.     procedure btn5MouseMove(Sender: TObject; Shift: TShiftState; X,
  64.       Y: Integer);
  65.     procedure btn6MouseMove(Sender: TObject; Shift: TShiftState; X,
  66.       Y: Integer);
  67.     procedure btn7MouseMove(Sender: TObject; Shift: TShiftState; X,
  68.       Y: Integer);
  69.     procedure btn8MouseMove(Sender: TObject; Shift: TShiftState; X,
  70.       Y: Integer);
  71.     procedure edt1MouseMove(Sender: TObject; Shift: TShiftState; X,
  72.       Y: Integer);
  73.     procedure clrgrd1MouseMove(Sender: TObject; Shift: TShiftState; X,
  74.       Y: Integer);
  75.     procedure pnl4MouseMove(Sender: TObject; Shift: TShiftState; X,
  76.       Y: Integer);
  77.     procedure pnl3MouseMove(Sender: TObject; Shift: TShiftState; X,
  78.       Y: Integer);
  79.     procedure img1MouseMove(Sender: TObject; Shift: TShiftState; X,
  80.       Y: Integer);
  81.     procedure edt1Change(Sender: TObject);
  82.     procedure img1MouseDown(Sender: TObject; Button: TMouseButton;
  83.       Shift: TShiftState; X, Y: Integer);
  84.     procedure btn5Click(Sender: TObject);
  85.     procedure mmiStepBackClick(Sender: TObject);
  86.     procedure mmiStepForwardClick(Sender: TObject);
  87.     procedure mmiWipeOffClick(Sender: TObject);
  88.     procedure mmiSizeClick(Sender: TObject);
  89.     procedure btn6Click(Sender: TObject);
  90.     procedure btn8Click(Sender: TObject);
  91.     procedure btn7Click(Sender: TObject);
  92.     procedure btn4Click(Sender: TObject);
  93.     procedure btn1Click(Sender: TObject);
  94.     procedure btn3Click(Sender: TObject);
  95.     procedure btn2Click(Sender: TObject);
  96.     procedure mmiSaveClick(Sender: TObject);
  97.     procedure mmiSaveAsClick(Sender: TObject);
  98.     procedure mmiCreateClick(Sender: TObject);
  99.     procedure mmiExitClick(Sender: TObject);
  100.     procedure img1MouseUp(Sender: TObject; Button: TMouseButton;
  101.       Shift: TShiftState; X, Y: Integer);
  102.     procedure mmiAboutDeveloperClick(Sender: TObject);
  103.     procedure btnRoundRectClick(Sender: TObject);
  104.   private
  105.     { Private declarations }
  106.   public
  107.     { Public declarations }
  108.   end;
  109.  
  110. var
  111.   Form1   : TForm1;
  112.   x1,y1,
  113.   x2,y2,
  114.   fat     : integer;
  115.   mb      : char;
  116.   flag,
  117.   front   : integer;
  118.   fname   : string;
  119.   backp,
  120.   nextp,
  121.   fopen,
  122.   fsave   : boolean;
  123.  
  124. implementation
  125.  
  126. uses Unit2, Unit3, Unit4;
  127.  
  128. {$R *.dfm}
  129.  
  130. procedure TForm1.FormCreate(Sender: TObject); // Îáëàñòü ðèñîâàíèÿ
  131. begin
  132.   fsave := true;
  133.   img1.Canvas.FillRect(img1.Canvas.ClipRect);  //Çàïîëíÿåò ïpÿìîóãîëüíèê, èñïîëüçóÿ êèñòü Brush, äî ïpàâîé è íèæíåé ãpàíèö, ïðÿìîóãîëüíèê, íà êîòîðîì ïðîèñõîäèò ãðàôè÷åñêèé âûâîä.
  134.   img2.Canvas.FillRect(img2.Canvas.ClipRect);
  135.   img3.Canvas.FillRect(img3.Canvas.ClipRect);
  136. end;
  137.  
  138. procedure TForm1.mmiOpenClick(Sender: TObject);
  139. begin
  140.    img1.AutoSize := true; //Ñâîéñòâî AutoSize  âêë
  141.    fopen := true;
  142.    dlgOPic1.Execute;
  143.    img1.Picture.LoadFromFile(dlgOPic1.FileName); //Çàãðóçêà èçîáðàæåíèÿ
  144.    fname := dlgOPic1.FileName;
  145.    img1.AutoSize := false; //AutoSize image'a âûêë
  146. end;
  147.  
  148. procedure TForm1.ud1Click(Sender: TObject; Button: TUDBtnType);
  149. begin
  150.   if not btn5.Down then
  151.   begin
  152.     front := StrToInt(edt1.Text);
  153.     if front <> 0 then
  154.     begin
  155.     if Button = btprev then
  156.      begin
  157.        dec(front);
  158.        if front = 0 then
  159.         front := 1;
  160.       edt1.Text := IntToStr(front);
  161.      end;
  162.      if Button = btnext then
  163.      begin
  164.        Inc(front);
  165.        edt1.Text := IntToStr(front);
  166.      end;
  167.     end;
  168.   end;
  169. end;
  170.  
  171. procedure TForm1.clrgrd1Change(Sender: TObject);
  172. begin
  173.   pnl4.Color := clrgrd1.ForegroundColor;
  174.   pnl3.color := clrgrd1.BackgroundColor;
  175. end;
  176.  
  177. procedure TForm1.btn1MouseMove(Sender: TObject; Shift: TShiftState; X,
  178.   Y: Integer);
  179. begin
  180.   stat1.Panels[0].Text := 'Ñòèðàíèå ÷àñòè ðèñóíêà ñ ïîìîùüþ '+
  181.                            'ëàñòèêà âûáðàíîãî öâåòà';
  182. end;
  183.  
  184. procedure TForm1.btn2MouseMove(Sender: TObject; Shift: TShiftState; X,
  185.   Y: Integer);
  186. begin
  187.   stat1.Panels[0].Text := 'Çàïîëíåíèå îáëàñòè îäíèì èç òåêóùèõ öâåòîâ';
  188. end;
  189.  
  190. procedure TForm1.btn3MouseMove(Sender: TObject; Shift: TShiftState; X,
  191.   Y: Integer);
  192. begin
  193.   stat1.Panels[0].text := 'Âûáîð öâåòîâ èç èìåþùèõñÿ íà ðèñóíêå';
  194. end;
  195.  
  196. procedure TForm1.btn4MouseMove(Sender: TObject; Shift: TShiftState; X,
  197.   Y: Integer);
  198. begin
  199.   stat1.panels[0].text := 'Ïðîâåäåíèå ïðÿìîé ëèíèè âûáðàíîé òîëùèíû';
  200. end;
  201.  
  202. procedure TForm1.btn5MouseMove(Sender: TObject; Shift: TShiftState; X,
  203.   Y: Integer);
  204. begin
  205.   stat1.Panels[0].Text := 'Ïðîâåäåíèå ïðîèçâîëüíîé ëèíèè òîëùèíîé â îäíó òî÷êó';
  206. end;
  207.  
  208. procedure TForm1.btn6MouseMove(Sender: TObject; Shift: TShiftState; X,
  209.   Y: Integer);
  210. begin
  211.   stat1.panels[0].text := 'Ðèñîâàíèå êèñòüþ âûáðîíîé òîëùèíû';
  212. end;
  213.  
  214. procedure TForm1.btn7MouseMove(Sender: TObject; Shift: TShiftState; X,
  215.   Y: Integer);
  216. begin
  217.   stat1.Panels[0].Text := 'Ðèñîâàíèå ýëëèïñà';
  218. end;
  219.  
  220. procedure TForm1.btn8MouseMove(Sender: TObject; Shift: TShiftState; X,
  221.   Y: Integer);
  222. begin
  223.   stat1.Panels[0].text := 'Ðèñîâàíèå ïðÿìîóãîëüíèêà';
  224. end;
  225.  
  226. procedure TForm1.edt1MouseMove(Sender: TObject; Shift: TShiftState; X,
  227.   Y: Integer);
  228. begin
  229.   stat1.Panels[0].text := 'Âûáîð òîëùèíû ';
  230. end;
  231. procedure TForm1.clrgrd1MouseMove(Sender: TObject; Shift: TShiftState; X,
  232.   Y: Integer);
  233. begin
  234.   stat1.Panels[0].Text := 'Âûáîð öâåòîâ';
  235. end;
  236.  
  237. procedure TForm1.pnl4MouseMove(Sender: TObject; Shift: TShiftState; X,
  238.   Y: Integer);
  239. begin
  240.   stat1.Panels[0].Text := 'Öâåò ëåâîé êíîïêè ìûøè';
  241. end;
  242.  
  243. procedure TForm1.pnl3MouseMove(Sender: TObject; Shift: TShiftState; X,
  244.   Y: Integer);
  245. begin
  246.   stat1.Panels[0].Text := 'Öâåò ïðàâîé êíîïêè ìûøè';
  247. end;
  248.  
  249. procedure TForm1.img1MouseMove(Sender: TObject; Shift: TShiftState; X,
  250.   Y: Integer);
  251. begin
  252.   stat1.Panels[0].Text := 'Îáëàñòü äëÿ ðèñîâàíèÿ';
  253.   stat1.Panels[1].text := 'x:'+inttostr(x)+ ' y:'+inttostr(y);
  254.   if ((ssRight in Shift) or (ssLeft in Shift)) then
  255.   begin
  256.     fsave := false;
  257.     backp := true;
  258.     nextp := false;
  259.     if btn1.Down then
  260.     begin
  261.       img1.Canvas.Pen.color:=pnl3.Color;
  262.       img1.Canvas.pen.Width:=strtoint((edt1.text));
  263.       Img1.Canvas.lineto(x,y);
  264.     end;
  265.  
  266.     if btn5.down then
  267.     begin
  268.       if mb = 'l' then
  269.        img1.Canvas.Pen.Color := pnl4.Color
  270.       else
  271.        img1.Canvas.Pen.Color := pnl3.Color;
  272.       img1.Canvas.LineTo(x,y);
  273.     end;
  274.  
  275.     if btn6.Down then
  276.     begin
  277.       img1.canvas.Pen.Width := strtoint(edt1.Text);
  278.       if mb = 'l' then
  279.        img1.Canvas.Pen.Color := pnl4.Color
  280.       else
  281.        img1.Canvas.Pen.Color := pnl3.Color;
  282.       img1.canvas.lineto(x,y);
  283.     end;
  284.  
  285.     if btn4.down then
  286.     begin
  287.       img1.picture.Assign(img2.picture);
  288.       if mb = 'l' then
  289.        Img1.Canvas.Pen.color := pnl4.Color
  290.       else
  291.        Img1.Canvas.Pen.color := pnl3.Color;
  292.       Img1.Canvas.Pen.width := strtoint(edt1.text);
  293.       Img1.Canvas.moveto(x,y);
  294.       Img1.Canvas.lineto(x1,y1);
  295.     end;
  296.  
  297.     if btn7.Down then
  298.     begin
  299.       img1.picture.Assign(img2.picture);
  300.       img1.Canvas.pen.Width := strtoint(edt1.text);
  301.       if mb = 'r' then
  302.        img1.Canvas.Pen.color := pnl3.Color
  303.       else
  304.  
  305.        img1.Canvas.Brush.Style := bsSolid;
  306.       Img1.Canvas.ellipse(x,y,x1,y1);
  307.     end;
  308.  
  309.     if btn8.Down then
  310.     begin
  311.       img1.picture.Assign(img2.picture);
  312.       img1.Canvas.pen.Width := strtoint(edt1.text);
  313.       if mb = 'r' then
  314.        img1.Canvas.Pen.color := pnl3.Color
  315.       else
  316.  
  317.        img1.Canvas.Brush.Style := bsSolid;
  318.       img1.Canvas.Rectangle(x,y,x1,y1);
  319.     end;
  320.  
  321.     if btnRoundRect.Down then
  322.     begin
  323.       img1.picture.Assign(img2.picture);
  324.       img1.Canvas.pen.Width := strtoint(edt1.text);
  325.       if mb = 'r' then
  326.        img1.Canvas.Pen.color := pnl3.Color
  327.       else
  328.  
  329.        img1.Canvas.Brush.Style := bsSolid;
  330.       img1.Canvas.RoundRect(x,y,x1,y1, 10, 10);
  331.     end;
  332.  
  333.  
  334.  end;
  335.   x2 := x;
  336.   y2 := y;
  337. end;
  338.  
  339. procedure TForm1.img1MouseUp(Sender: TObject; Button: TMouseButton;
  340.   Shift: TShiftState; X, Y: Integer);
  341. begin
  342.     if btn2.Down then
  343.     begin
  344.       if button = mbRight then
  345.        Img1.Canvas.brush.color := pnl3.Color
  346.       else
  347.        Img1.Canvas.brush.color := pnl4.Color;
  348.       Img1.Canvas.FloodFill(x, y,Img1.Canvas.Pixels[x,y], fssurface);
  349.     end;
  350.  
  351.     if btn3.Down then
  352.     begin
  353.       if button = mbRight then
  354.        pnl3.Color := Img1.Canvas.pixels[x,y]
  355.       else
  356.        pnl4.color := Img1.Canvas.pixels[x,y];
  357.     end;
  358. end;
  359.  
  360. procedure TForm1.img1MouseDown(Sender: TObject; Button: TMouseButton;
  361.   Shift: TShiftState; X, Y: Integer);
  362. begin
  363.   img2.picture.Assign(img1.Picture);
  364.   x1 := x;
  365.   y1 := y;
  366.   if button = mbRight then
  367.    mb := 'r'
  368.   else
  369.    mb := 'l';
  370.   img1.Canvas.MoveTo(x,y);
  371.   Img1MouseMove(Sender,Shift,X,Y);
  372. end;
  373.  
  374. procedure TForm1.edt1Change(Sender: TObject);
  375. begin
  376.   fat := strtoint(edt1.text);
  377.   if not btn5.Down then
  378.    img1.Canvas.Pen.Width := fat;
  379.  
  380.    If edt1.text='0' then Messagedlg('Òîëùèíà íå ìîæåò áûòü ðàâíà 0!',
  381. mtInformation,[mbok],0);
  382.    If edt1.text='0' then Edt1.Text := '1';
  383.  
  384. end;
  385.  
  386. procedure TForm1.btn5Click(Sender: TObject);
  387. begin
  388.   img1.Canvas.Pen.Width := 1;
  389.   lbl1.Visible := false;
  390.   edt1.Visible := false;
  391.  
  392.  
  393. end;
  394.  
  395. procedure TForm1.mmiStepBackClick(Sender: TObject);
  396. begin
  397.   if backp = true then
  398.   begin
  399.     img3.picture.Assign(img1.Picture);
  400.     img1.picture.Assign(img2.Picture);
  401.     nextp := true;
  402.   end;
  403.   backp := false;
  404. end;
  405.  
  406. procedure TForm1.mmiStepForwardClick(Sender: TObject);
  407. begin
  408.   if nextp = true then
  409.   begin
  410.     img2.Picture.Assign(img1.Picture);
  411.     img1.Picture.Assign(img3.Picture);
  412.     backp := true;
  413.   end;
  414.   nextp := false;
  415. end;
  416.  
  417. procedure TForm1.mmiWipeOffClick(Sender: TObject);
  418. begin
  419.   img1.Picture := nil;
  420.   img1.Canvas.FillRect(img1.Canvas.ClipRect);
  421.   img2.Picture := nil;
  422.   img2.Canvas.FillRect(img2.Canvas.ClipRect);
  423.   img3.Picture := nil;
  424.   img3.Canvas.FillRect(img3.Canvas.ClipRect);
  425.   backp := false;
  426.   nextp := false;
  427. end;
  428.  
  429. procedure TForm1.mmiSizeClick(Sender: TObject);
  430. begin
  431.   Form2.ShowModal;
  432. end;
  433.  
  434. procedure TForm1.btn6Click(Sender: TObject);
  435. begin
  436.   lbl1.Visible := true;
  437.   edt1.Visible := true;
  438.   ud1.Visible := true;
  439.  
  440. end;
  441.  
  442. procedure TForm1.btn8Click(Sender: TObject);
  443. begin
  444.   lbl1.Visible := true;
  445.   edt1.Visible := true;
  446.   ud1.Visible := true;
  447.  
  448.  
  449. end;
  450.  
  451. procedure TForm1.btn7Click(Sender: TObject);
  452. begin
  453.   lbl1.Visible := true;
  454.   edt1.Visible := true;
  455.   ud1.Visible := true;
  456.  
  457. end;
  458.  
  459. procedure TForm1.btn4Click(Sender: TObject);
  460. begin
  461.   lbl1.Visible := true;
  462.   edt1.Visible := true;
  463.   ud1.Visible := true;
  464.  
  465. end;
  466.  
  467. procedure TForm1.btn1Click(Sender: TObject);
  468. begin
  469.   lbl1.Visible := true;
  470.   edt1.Visible := true;
  471.   ud1.Visible := true;
  472.  
  473. end;
  474.  
  475. procedure TForm1.btn3Click(Sender: TObject);
  476. begin
  477.   lbl1.Visible := true;
  478.   edt1.Visible := true;
  479.   ud1.Visible := true;
  480.  
  481. end;
  482.  
  483. procedure TForm1.btn2Click(Sender: TObject);
  484. begin
  485.   lbl1.Visible := true;
  486.   edt1.Visible := true;
  487.   ud1.Visible := true;
  488.  
  489. end;
  490.  
  491. procedure TForm1.mmiSaveClick(Sender: TObject);
  492. var
  493.   bmp:  TBitmap;
  494. begin
  495.   if fopen then
  496.    begin
  497.       try
  498.          bmp := TBitmap.Create;
  499.          bmp.Assign(img1.Picture);
  500.          bmp.SaveTofile(ChangeFileExt(fname, '.bmp'));
  501.       finally
  502.          bmp.Free;
  503.       end;
  504.    end
  505.   else
  506.    begin
  507.      dlg1.Execute;
  508.      try
  509.         bmp := TBitmap.Create;
  510.         bmp.Assign(img1.Picture);
  511.         bmp.SaveTofile(ChangeFileExt(dlg1.FileName, '.bmp'));
  512.      finally
  513.         bmp.Free;
  514.      end;
  515.      fopen := true;
  516.    end;
  517.    fsave := true;
  518. end;
  519.  
  520. procedure TForm1.mmiSaveAsClick(Sender: TObject);
  521. var
  522.   bmp: TBitmap;
  523. begin
  524.   dlg1.Execute;
  525.   try
  526.     bmp := TBitmap.Create;
  527.     bmp.Assign(img1.Picture);
  528.     bmp.SaveTofile(ChangeFileExt(dlg1.FileName, '.bmp'));
  529.   finally
  530.     bmp.Free;
  531.   end;
  532.   fsave := true;
  533. end;
  534.  
  535. procedure TForm1.mmiCreateClick(Sender: TObject);
  536. begin
  537.   if fsave <> true then
  538.   begin
  539.     Form4.ShowModal;
  540.   end
  541.   else
  542.   begin
  543.     fopen := false;
  544.     img1.Picture := nil;
  545.     img1.Canvas.FillRect(img1.Canvas.ClipRect);
  546.     img2.Picture := nil;
  547.     img2.Canvas.FillRect(img2.Canvas.ClipRect);
  548.     img3.Picture := nil;
  549.     img3.Canvas.FillRect(img3.Canvas.ClipRect);
  550.     backp := false;
  551.     nextp := false;
  552.   end;
  553. end;
  554.  
  555. procedure TForm1.mmiExitClick(Sender: TObject);
  556. begin
  557.   if fsave <> true then
  558.   begin
  559.     Form4.ShowModal;
  560.   end;
  561.   if fsave = true then
  562.    form1.Close;
  563. end;
  564.  
  565. procedure TForm1.mmiAboutDeveloperClick(Sender: TObject);
  566. begin
  567. Messagedlg('Ïðîãðàììà ðàçðàáîòàíà Áóéêî Âèêòîðèåé, ãð.851002',
  568. mtInformation,[mbok],0);
  569. end;
  570.  
  571. procedure TForm1.btnRoundRectClick(Sender: TObject);
  572. begin
  573.   lbl1.Visible := true;
  574.   edt1.Visible := true;
  575.   ud1.Visible := true;
  576. end;
  577.  
  578. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement