Логин:     Забыли пароль?
 
Пароль:   Регистрация

Форум / Программирование - НЕправильный Алгоритм с графическим объектом!!!!  

НЕправильный Алгоритм с графическим объектом!!!!

Egor92
Egor92
Посетитель
Сообщения: 1
[Сообщение #1] 6 июня 2011, 21:23
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.....помогите кто что знает!!!...

min@y™
min@y™
Доктор наук
Сообщения: 400
[Сообщение #2] 7 июня 2011, 08:18
Вопросы надо задавать вот сюда. И желательно, чтобы комментарии в коде были по-русски, и чтобы их было много. И не надо использовать однобуквенные имена переменных: очень сложно анализировать код.

Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Всего сообщений: 2 (сейчас показаны: с 1 по 2)

Перейти в раздел:


 © 2004 - 2017, Delphi.int.ru
Версия форума: 1.10 (19.01.2010)
RSS Delphi.int.ru Expert Код
Выполнено за 0.08 сек.
Обратная связь  
Рейтинг@Mail.ru Majordomo.ru - надёжный хостинг