Большой Воронежский Форум
» Программирование>Построение объекта в Delphi
jin666 23:17 04.08.2008
Нужна помощь. Столкнулся с задачей построения какого либо объекта по заданным координатам (координаты вбиваются вручную). Т.е грубо говоря на известны отрезки AB,BC,CD,DA и нам надо построить квадрат... Если делать с установленным параметром (т.е непосредственнно вбивать координаты в программе) то проблем в принципе нету, как я понимаю это делается image1.Canvas.Polygon([poin(0,100)....и т.д]); (либо полилайном), а вот как быть если координаты надо вводить вручную? Помогите знающие люди, срочно надо.
Rаvel 23:54 04.08.2008
procedure TForm1.Button1Click(Sender: TObject);
var TR: Trect;
begin
TR:=Rect(StrToInt(edit1.Text),StrToInt(edit2.Text) ,StrToInt(edit3.Text),StrtoInt(edit4.Text));
Canvas.Rectangle(TR);
end;
quice 01:28 05.08.2008
Допустим в грид вводятся все координаты - при изменении данных в гриде вызывается обработчик, который делает Refresh() (или InvalidateRect() -D) для канвы, а в обработчике прорисовки (OnPaint кажется, давно в руки дельф не брал))) перебираются данные из грида, и рисуется.
jin666 10:08 05.08.2008
Rаvel, это для построения чисто квадрата, не подходит.. фигура может быть и сложная, так что нужно построение чисто по линиям, но вс равно спасибо, буду дальше рыть...
Rаvel 15:15 05.08.2008
Все равно не понял че конкретно нада, но предположу что подойет так:

Сообщение от :
var
Pt: TPoint;
X,Y: integer;



Pt.X:=StrToInt(Edit1.text); //x-координата первой точки
Pt.Y:=StrToInt(Edit2.text); //y-координата первой точки

Canvas.PenPos:=Pt; //устанавливаем начальную позицию

X:=StrToInt(Edit3.text); //x-координата второй точки
Y:=StrToInt(Edit4.text); //y-координата второй точки

Canvas.LineTo(X,Y); //строим линию между первой и второй точкой

X:=StrToInt(Edit5.text); //x-координата третьей точки
Y:=StrToInt(Edit6.text); //y-координата третьей точки

Canvas.LineTo(X,Y); //строим линию между второй и третьей точкой

//дальше по аналогии

jin666 18:01 06.08.2008
не совсем.. в том то вся запара, что в делфи указывается координата XY для отрезка, т.е для построения отрезка AB нам надо вбить 4 координады, 2 для А и 2 для В... а задача в том что бы сократить вбивание, т.е грубо говоря мы просто вводим длинну отрезка AB, BC, CD, DA (получается всего 4ре цыфры вбиваются) и указываем диагональ (к примеру для квадрата или прямоугольника), допустим АС и из этого строится чертёж... незнаю как ещё объяснить...
p51x 18:49 06.08.2008
Нужен еще центр, который определит где рисовать....
По-моему, у тебя проблема с математикой: если известен центр, длины сторон (диагональ считается, если захочется) и угол поворота (если нужно рисовать и наклоненные), то посчитать координаты вершин не проблема.
А дальше Rectangle, LineTo, .... что душе больше нравиться.
Rаvel 21:13 06.08.2008
Как бы так сказать... у точек на плоскости типо две координаты
Если точно квадрат - то можно вбить длину и начальные координаты, а если многоугольник - то либо углы и длины сторон, либо каждая координата отдельно.
Короче p51x все верно сказал
dn2k4 21:46 06.08.2008

Сообщение от Rаvel:
Как бы так сказать... у точек на плоскости типо две координаты

Специально для рисования графиков можно извратиться (причем классическим способом) =)
Можно огрубить понятие "плоскости" до прямоугольника размерами WхH, состоящего из конечного числа точек. Тогда для указания точки можно указывать не координаты, а ее порядковый номер.
jin666 22:24 06.08.2008
p51x, ну ну... было бы всё так просто...
Ладно, всем спасибо, буду разбираться, на пальцах не объяснишь
p51x 23:22 06.08.2008
jin666, как спросил, так и ответили....
jin666 23:30 06.08.2008
p51x, ты что то как то агрессивно настроен я посмотрю... не будем ругаться, может в дальнейшем выложу кусок кода и скрины что бы было понятней...
dn2k4 23:49 06.08.2008

Сообщение от jin666:
ты что то как то агрессивно настроен я посмотрю...

Да-да, вы тут пока покурите, а я подумаю, что хотел спросить =)
Вверх