Студопедия

КАТЕГОРИИ:


Архитектура-(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 – свойство формы, показывающее ширину части формы, на которой располагаются объекты

Shape1.Left:=Shape1.Left+1;
Начало
Shape1.Left>=Max
Max:=Form1.ClientWidth–Shape1.Width;
Timer1.Enabled:=False;
Конец
Передвижение круга на 1 пиксель
Расчет максимального положения круга исходя из ширины формы и ширины круга
Проверка на крайне правое положение круга и выключение таймера при достижении границы
да
нет

Рисунок 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).

Форма
Левое положение
Правое положение
LeftMax-LeftMin
LeftMin (10%)
LeftMax (90%)
Form.ClientWidth
x=H
x =0
Реальный объект

Рисунок 2.2

 

Пусть реальный объект перемещается на расстояние, равное H. Текущую координату обозначим через x. Таким образом x меняется от 0 до H. При этом на форме объект, показывающий положение реального объекта, изменяет свое положение в пикселях от LeftMin до LeftMax. Если требуется масштабируемость в зависимости от размера формы, то устанавливается крайне левое и крайне правое положение в о.е. (или %) от соответствующего размера формы. Например, на рисунке 2.2 левое положение равняется 10% от ширины формы, а правое – 90%. Следовательно, перерасчет координаты x в положение на форме Left нужно производить по следующим формулам:

;

;

. (2.1)

Аналогично рассчитывается положение объектов при движении по вертикали.




Поделиться с друзьями:


Дата добавления: 2015-07-02; Просмотров: 347; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.