На канве объекта Image я отмечаю две точки, далее рисую оси x и y,подскажите пожалста как можно нарисовать отрезок равный отмеченному, но который будет || оси x и проходить через ось y?
unit Unit1;
interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Buttons, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private{ Private declarations }public{ Public declarations }end;
var
Form1: TForm1;
implementation{$R *.dfm}var x1,y1: array [0..10] of integer;
i:Integer;
ln:real;
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
x1[0]:=Image1.Width div2;
y1[0]:=Image1.Height div2;
end;
//Отмечаем точки
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
beginif i<2thenbegin
inc(i);
with Image1.Canvas do
ellipse(x,y,x+5,y+5);
if i=1thenbegin
x1[1]:=x-Image1.Width div2;
y1[1]:=-(y-Image1.Height div2);
end;
if i=2thenbegin
x1[2]:=x-Image1.Width div2;
y1[2]:=-(y-Image1.Height div2);
end;
endelse showMessage(' ');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ln:=sqrt(sqr(x1[1]-x1[2]) + sqr(y1[1]-y1[2]));//находим длину отрезка
With image1.Canvas dobegin//Оси
MoveTo(Image1.Width div2,0);
LineTo(Image1.Width div2,Image1.Height);
MoveTo(0,Image1.Height div2 );
LineTo(Image1.Width,Image1.Height div2);
end;
end;
end.
мисс_граффити
7.11.2006 18:43
таких отрезков может быть очень много.... равен - по длине? а проходить через у где угодно может?
Rudolf
7.11.2006 19:40
Я понимаю что очень много.. мне главное алгоритм,который я как раз таки и не могу составить((, а так можно где угодно только бы равный и параллельный Оx.
мисс_граффити
7.11.2006 22:02
ну, если ошибка округления не очень принципиальна, то можно делать так: 1. считаем длину отрезка - координаты 2 точек известны. округляем. 2. проводим отрезок между точками (-d/2;y)(d/2;y), где y - произвольное....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.