Блин, я уже рыдаю.
procedure TForm1.FormCreate(Sender: TObject);
begin
Canvas.Pen.Mode := pmNot;
// Всегда будет выбран цвет инверсный цвету фона.end;
procedure TForm1.N3Click(Sender: TObject); //Здесь производится очистка формы от шедевров изобразительного искусства
begin
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(ClientRect);
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
M, C, W, E: Integer;
begin
M:=Image1.Width;
ColorDialog1.Color:=Image1.Canvas.Brush.Color;
if ColorDialog1.Execute then
Image1.Canvas.Brush.Color:=ColorDialog1.Color;
Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Rectangle(M,C,W,E);
должно быть 4 параметра, известен 1 - M end;
procedure TForm1.FormShow(Sender: TObject);
Var
X: Integer;
Y: Integer;
W: Integer;
begin
SB.Panels[0].Width:=90;
SB.Panels[1].Width:=140;
SB.Panels[2].Width:=90;
SB.Panels[3].Width:=90;
W:=Canvas.Pen.Width;
end;
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
Image1.Canvas.Pen.Width:=UpDown1.Position;
Repaint;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
Label1.Left:=220;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
Edit1.Visible:=True;
SpeedButton5.Visible:=True;
Label1.Left:=180;
SpeedButton3.Visible:=False;
SpeedButton4.Visible:=True;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
SpeedButton5.Visible:=False;
SpeedButton4.Visible:=False;
SpeedButton3.Visible:=True;
Label1.Left:=176;
Edit1.Visible:=False;
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
if FontDialog1.Execute then // если пользователь выбрал шрифт
Image1.Canvas.Font:=FontDialog1.Font;
end;
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
Label1.Left:=250;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Label1.Left=220 then
SX := X;
SY := Y;
if Label1.Left=180 then
Image1.Canvas.TextOut(X, Y, (Edit1.Text));
А "рисовать" - игде?if Label1.Left=250 then
DX:=X;
DY:=Y;
DY определяем всегда, DX - только если Label1.Left=250if Label1.Top=80 then
KX := X;
KY := Y;
KY определяем всегда, KX - только если Label1.Top=80end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
c:Double;
begin
SB.Panels[4].Text:= FormatFloat('##0', X);
SB.Panels[5].Text:= FormatFloat('##0', Y);
SB.Panels[0].Text := format('Начало %d:%d', [SX, SY]);
SB.Panels[1].Text := format('Положен. курсора %d:%d', [X, Y]);
c := Sqr(Sqrt(Abs(X-SX))+Sqrt(Abs(Y-SY)));
SB.Panels[2].Text := Format('Длинна: %.2f', [c/33]);
if Label1.Top=80 then
PrevX := Canvas.PenPos.X;
PrevY := Canvas.PenPos.Y;
Canvas.MoveTo(KX, KY);
//Ну таки линии и рисуем, где квадрат - не пойму. Canvas.LineTo(PrevX, PrevY);
Canvas.MoveTo(KX, KY);
Image1.Canvas.LineTo(X, Y);
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Label1.Left=250 then
DDX:=X;
DDY:=Y;
//DDY- определяем всегда, а DDX только если Label1.Left=250 Image1.Canvas.Rectangle(DX, DY, DDX, DDY);
Ах вот и квадрат, появится при отпускании мышки (только вот чему равны DX, DY?) if Label1.Left=220 then
SSX := X;
SSY := Y;
SSY - определяем всегда, а DDX только если Label1.Left=220 if Com.Text='Штрих' then
Image1.Canvas.Pen.Style:=psDash;
if Com.Text='Штрих мелкий' then
Image1.Canvas.Pen.Style:=psDot;
if Com.Text='Штрихпунктир' then
Image1.Canvas.Pen.Style:=psDashDot;
if Com.Text='Двойной Ш.П.' then
Image1.Canvas.Pen.Style:=psDashDotDot;
if Com.Text='Квадратн.Сплошн.' then
Image1.Canvas.Pen.Style:=psInsideFrame;
Image1.Canvas.MoveTo(SX,SY);
И к квадрату пришпандорили линиюImage1.Canvas.LineTo(SSX,SSY);
if Label1.Top=80 then
Потом посмотрели где верхушка лейбочки, и запомнили координаты карандаша, на всякий случайKKX := X;
KKY := Y;
Причем Y запоминаем всегда, а X-если верхушка лейбочки на 80-м пикселе сверху формы end;
А дальше смотреть не могу - плАчу procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
Image1.Picture.SaveToFile('C:\Documents and Settings\Администратор\Мои документы\Мои рисунки\fff.bmp');
end;
procedure TForm1.SpeedButton8Click(Sender: TObject);
begin
ColorDialog2.Color:=Image1.Canvas.Pen.Color;
if ColorDialog2.Execute then
Image1.Canvas.Pen.Color:=ColorDialog2.Color;
А оно сработет при Canvas.Pen.Mode:=pmNot?end;
procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
Label1.Top:=80;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
procedure TForm1.N6Click(Sender: TObject);
begin
if SavePictureDialog1.Execute then
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
procedure TForm1.N8Click(Sender: TObject);
begin
Panel2.Visible:=True;
GroupBox2.Visible:=True;
Edit2.Text:=IntToStr(Image1.Width);
Edit3.Text:=IntToStr(Image1.Height);
Image1.Enabled:=False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Height:=StrToInt(Edit3.Text);
Image1.Width:=StrToInt(Edit2.Text);
Image1.Enabled:=True;
GroupBox2.Visible:=False;
Panel2.Visible:=False;
end;
end.