| Цитата(Alexeis @ 13.11.2012, 21:51) | | У класса TCanvas есть свойство Pen у него толщина линии. Заливку можно сделать при помощи FloodFill , ну а ластик в простейшем случае рисовать как прямоугольник белого цвета. |
Это я знаю. А как прописать? Я уже весь код написала, а вот с этим загвоздка. Преподаватель ничего не объясняет( Вот код моей программы:
unit Unit2;
| Код | interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtDlgs, jpeg, ExtCtrls, StdCtrls, Buttons;
type TForm2 = class(TForm) BitBtn1: TBitBtn; Panel1: TPanel; Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; OpenPictureDialog1: TOpenPictureDialog; SavePictureDialog1: TSavePictureDialog; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; procedure BitBtn1Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure N3Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure Image5MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image5MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Image5MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image4Click(Sender: TObject); procedure Image1Click(Sender: TObject); procedure Image2Click(Sender: TObject); procedure Image3Click(Sender: TObject); private { Private declarations } public { Public declarations } Drag:boolean; Pen:boolean; Line:boolean; el:boolean; rect:boolean; x1,y1: integer; end;
var Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.BitBtn1Click(Sender: TObject); begin form2.Hide; form1.Show; end;
procedure TForm2.FormCreate(Sender: TObject); begin Image5.Picture.LoadFromFile('new.bmp'); end;
procedure TForm2.Image1Click(Sender: TObject); begin line:=false; el:=true; rect:=false; pen:=false; end;
procedure TForm2.Image2Click(Sender: TObject); begin line:=true; el:=false; rect:=false; pen:=false; end;
procedure TForm2.Image3Click(Sender: TObject); begin line:=false; el:=false; rect:=false; pen:=true; end;
procedure TForm2.Image4Click(Sender: TObject); begin line:=false; el:=false; rect:=true; pen:=false; end;
procedure TForm2.Image5MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Drag:=True; Canvas.MoveTo(X, Y); x1:=x; y1:=y; end;
procedure TForm2.Image5MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if (Drag and Pen) then Canvas.LineTo(X, Y);
end;
procedure TForm2.Image5MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Line then Canvas.LineTo(x,y); if rect then Canvas.Rectangle(x1,y1,x,y); if el then Canvas.Ellipse(x1,y1,x,y); Drag:=false; end;
procedure TForm2.N2Click(Sender: TObject); begin if MessageDLG('Сохранить изменения в документе?',mtConfirmation,[mbOk,mbNo],1)=mrOk then begin if savepicturedialog1.Execute then Image5.Picture.SaveToFile(savepicturedialog1.FileName); end else Image5.Picture.LoadFromFile('new.bmp'); end;
procedure TForm2.N3Click(Sender: TObject); begin if OpenPictureDialog1.Execute then Image5.picture.LoadFromFile(OpenPictureDialog1.Filename); end;
procedure TForm2.N4Click(Sender: TObject); begin if SavePictureDialog1.Execute then Image5.picture.LoadFromFile(SavePictureDialog1.Filename); end;
procedure TForm2.N6Click(Sender: TObject); begin if MessageDLG('Сохранить изменения в документе?',mtConfirmation,[mbOk,mbNo],1)=mrOk then begin if savepicturedialog1.Execute then Image5.Picture.SaveToFile(savepicturedialog1.FileName);end else begin form1.Close; form2.Close; end;end;
end.
|
Модератор: используйте подсветку кода
Добавлено @ 07:29
| Цитата(MetalFan @ 13.11.2012, 21:39) | Наработки/соображения есть? Если нет, то тема или в работу или в центр помощи поедет. |
Конечно, есть. Я уже все прописала. Осталось вот с этими вопросами разобраться) |