КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Расчет положения объекта на форме по физическим координатам моделируемого объекта
Блок-схема программы В обработчике события «OnClick» кнопки «Button1» необходимо включить таймер. В обработчике события «OnTimer» таймера «Timer1» необходимо увеличить параметр «Left» круга «Shape1» на 1. Затем проверить на достижение правой границы формы. Блок схема данной подпрограммы приведена на рисунке 2.2. Дополнительно используется локальная переменная Max, предназначенная для расчета максимального положения круга на форме. Form1.ClientWidth – свойство формы, показывающее ширину части формы, на которой располагаются объекты
Рисунок 2.2
2.1.1.3 Листинг программы в среде Delphi:
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) Button1: TButton; Timer1: TTimer; Shape1: TShape; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=True; end;
procedure TForm1.Timer1Timer(Sender: TObject); var Max: integer; begin Shape1.Left:=Shape1.Left+1; Max:=Form1.ClientWidth-Shape1.Width; if Shape1.Left>=Max then begin Timer1.Enabled:=False; end; end;
end.
2.1.1.4 Листинг программы в среде C++
//-------------------------------------------------------------- #include <vcl.h> #pragma hdrstop
#include "Unit1.h" //-------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //-------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Timer1->Enabled = true; } //-------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { int Max;
Shape1->Left += 1; Max = Form1->ClientWidth - Shape1->Width; if (Shape1->Left >= Max) { Timer1->Enabled = false; }; }
Предыдущий пример перемещал объект типа Shape по форме, изменяя его параметр Left. Однако для масштабируемости формы и моделирования физических объектов такой способ не подходит. Положение физических объектов в пространстве измеряется в метрах, а положение объекта на форме – в пикселях. Требуется установить соответствие между разными единицами измерения расстояния (рисунок 2.2).
Рисунок 2.2
Пусть реальный объект перемещается на расстояние, равное H. Текущую координату обозначим через x. Таким образом x меняется от 0 до H. При этом на форме объект, показывающий положение реального объекта, изменяет свое положение в пикселях от LeftMin до LeftMax. Если требуется масштабируемость в зависимости от размера формы, то устанавливается крайне левое и крайне правое положение в о.е. (или %) от соответствующего размера формы. Например, на рисунке 2.2 левое положение равняется 10% от ширины формы, а правое – 90%. Следовательно, перерасчет координаты x в положение на форме Left нужно производить по следующим формулам: ; ; . (2.1) Аналогично рассчитывается положение объектов при движении по вертикали.
Дата добавления: 2015-07-02; Просмотров: 404; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |