Форум Программирование НЕправильный Алгоритм с графическим объектом!!!! |
|
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin,Math, ExtCtrls; type Risunok= class(TObject) xa,ya,xb,yb,xc,yc,xd,yd,xe,ye,ab,bc,cd,de:integer; w,w1,ox:real; e,p,l,i,z,c,v,b,g,h:Integer;//êîîðäèíàòû øòðèõîâêè procedure data; procedure draw; end; type TForm1 = class(TForm)//Îïèñàíèå ôîðìû è å¸ îáúêòîâ Image1: TImage; SpinEdit1: TSpinEdit; Button1: TButton; procedure SpinEdit1Change(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Ris1:Risunok; implementation {$R *.dfm} procedure Risunok.data;//Ïðîöåäóðà ðèñîâàíèÿ êèíåìàòè÷åñêîé ñõåìû begin xa:=Form1.spinedit1.Value*180; xc:=round(form1.Image1.Width/2); yc:=round(form1.Image1.Height/2); ya:=yc; ye:=yc; ab:=180; bc:=60; cd:=60; de:=180; // âû÷èñëåíèå êîîðäèíàò òî÷åê îïðåäåëÿþùèõ ïîëîæåíèå ìåõàíèçìà xd:=xc+round(cd*cos(w)); yd:=yc-round(cd*sin(w)); yb:=yc+round(cd*sin(w)); xb:=xc-round(cd*cos(w)); xa:=xb+round(sqrt(sqr(ab)-sqr(yb-ya))); xa:=xb-round(ab*cos(w1)); xe:=xd+round(de*cos(w1)) end; procedure Risunok.draw; begin //ðèñîâàíèå ýëåìåíòîâ ñèñòåìû íà ýêðàíå è ïîäïèñè îñíîâíûõ òî÷åê ìåõàíèçìà form1.image1.Picture:=nil; with form1.Image1. Canvas do begin Pen.Style:=psSolid; pen.Color:=clBlack; Ellipse(xb-4,yb-4,xb+4,yb+4); Ellipse(xa-4,ya-4,xa+4,ya+4); Ellipse(xc-4,yc-4,xc+4,yc+4); Ellipse(xd-4,yd-4,xd+4,yd+4); Ellipse(xe-4,ye-4,xe+4,ye+4); Polyline([Point(xc,yc),Point(xc-20,yc+25),Point(xc+20,yc+25),Point(xc,yc)]); Rectangle(xa+25,ya+15,xa-25,ya-15); MoveTo(ya-25,ya-25); LineTo(220,ya-25); LineTo(70,ya-25); MoveTo(ya+25,ya+25); LineTo(220,ya+25); LineTo(70,ya+25); Rectangle(xe+25,ye+15,xe-25,ye-15); MoveTo(650,ye+23); lineTo(495,ye+23); LineTo(605,ye+23); MoveTo(650,ye-23); LineTo(495,ye-23); LineTo(605,ye-23); MoveTo(xa,ya); LineTo(xb,yb); MoveTo(xe,ye); LineTo(xd,yd); LineTo(xb,yb); lineTo(xd,yd); moveto(xb,yb); lineto(xd,yd); moveto(xb,yb); lineto(xa,ya); moveto(xa+5,ya-8); Textout(xa+5,ya-8,'A'); moveto(xb+5,yb-8); Textout(xb+5,yb-8,'B'); moveto(xc+5,yc-8); Textout(xc+5,yc-8,'C'); moveto(xd+5,yd-8); Textout(xd+5,yd-8,'D'); moveto(xe+5,ye-8); Textout(xe+5,ye-8,'E'); //Ðèñîâàíèå øòðèõîâêè e:=ya+25; p:=ya-25; l:=220; i:=0; z:=yc+35; c:=380; v:=ye+42; b:=650; g:=ye-42; h:=640; i:=0; while i<=150 do begin moveto(l-150+i,e); lineto(l-150+(i-5),e+20); i:=i+5; end; i:=0; while i<=150 do begin moveto(l-150+i,p); lineto(l-150+(i+5),p-20); i:=i+5; end; i:=0; while i<=40 do begin MoveTo(c-40+i,z); LineTo(c-40+(i+5),z-10); i:=i+5; end; i:=0; while i<=155 do begin MoveTo(b-150+i,v); Lineto(b-150+(i-5),v-20); i:=i+5; end; i:=0; while i<=155 do begin MoveTo(h-150+i,g); LineTo(h-150+(i+5),g+20); i:=i+5; end; Pen.Style:=psDashDot; moveto(50,ya); LineTo(670,ya); lineto(xe,ye); end; end; procedure TForm1.SpinEdit1Change(Sender: TObject); begin Ris1:=Risunok.create; Ris1.data; ris1.draw; end; procedure TForm1.Button1Click(Sender: TObject); begin close; end; end. Мне сказали что тут не правильно с заданием,и что должно изменятся не угол положения объектов,а координата X.....помогите кто что знает!!!... | ||||||
|
Вопросы надо задавать вот сюда. И желательно, чтобы комментарии в коде были по-русски, и чтобы их было много. И не надо использовать однобуквенные имена переменных: очень сложно анализировать код. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! | ||||||
Перейти в раздел:
© 2004 - 2024, Delphi.int.ru |
Версия форума: 1.10 (19.01.2010) |
Выполнено за 0.02 сек. |