Реализация CarControl

Реализация CarControl

После этой подготовительной работы по созданию пользовательского интерфейса вы можете приступить к реализации членов типа. Сначала создайте новый общедоступный перечень AnimFrames, который будет иметь члены, представляющие каждый элемент из ImageList. Этот перечень будет использоваться для определения текущего фрейма, предназначенного для визуализации в PictureBox.

// Вспомогательный перечень для изображений.

public enum AnimFrames {

 Lemon1, Lemon2, Lemon3,

 AbоutТоBlow, EngineBlown

}

Тип CarControl поддерживает достаточно большой набор приватных данных, необходимых для представления программной логики анимации. Вот краткое описание каждого из членов.

public partial class CarControl: UserControl {

 // Данные состояния.

 private AnimFrames currFrame = AnimFrames.Lemon1;

 private AnimFrames currMaxFrame = AnimFrames.Lemon3;

 private bool IsAnim;

 private int currSp = 50;

 private int maxSp = 100;

 private string carPetName= "Lemon";

 private Rectangle bottomRect = new Rectangle();

 public CarControl() {

  InitializeComponent();

 }

}

Как видите, здесь есть данные, представляющие текущую и максимальную скорости, название автомобиля, а также два члена типа AnimFrames. Переменная currFrame используется для указания того, какой из членов ImageList следует отобразить. Переменная currMaxFrame используется для обозначения текущего верхнего предела в ImageList (напомним, что в цикле анимации CarControl используются от трех до пяти изображений, в зависимости от скорости автомобиля). Элемент данных IsAnim используется для определения того, что автомобиль в настоящий момент находится в режиме использования анимации. Наконец, член Rectangle(bottomRect) используется для представления нижней части области CarControl. Позже в этой части элемента управления будет отображаться название автомобиля.

Чтобы разделить CarControl на две прямоугольных области, создайте приватную вспомогательную функцию с именем StretchBox(). Задачей этого члена будет вычисление правильных размеров члена bottomRect и гарантия того, что элемент PictureBox будет растянут на верхние примерно две трети поверхности типа CarControl.

private void StretchBox() {

 // Конфигурация окна изображения.

 currentImage.Top = 0;

 currentImage.Left = 0;

 currentImage.Height = this.Height – 50;

 currentImage.Width = this.Width;

 currentImage.Image = carImages.Images[(int)AnimFrames.Lemon1];

 // Выяснение размеров нижнего прямоугольника.

 rect.bottomRect.X = 0;

 bottomRect.Y = this.Height – 50;

 bottomRect.Height = this.Height – currentImage.Height;

 bottomRect.Width = this.Width;

}

После установки размеров каждого прямоугольника в рамках конструктора, заданного по умолчанию, вызывается StretchBox().

public CarControl() {

 InitializeComponent();

 StretchBox();

}

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

7.3.2 Реализация

Из книги C++ автора Хилл Мюррей

7.3.2 Реализация Реализующие slist функции в основном просты. Единственая настоящая сложность – что делать в случае ошибки, если, например, пользователь попытается get() что-нибудь из пустого списка. Мы обсудим это в #7.3.4. Здесь приводятся определения членов slist. Обратите


Реализация

Из книги Вариации на тему STL. Адаптер обобщенного указателя на функцию-член класса автора Гусаров Михаил


Реализация gen_mem_fun_t

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Реализация gen_mem_fun_t Рассмотрим реализацию mem_fun_t:template<class R, class T> struct mem_fun_t { explicit mem_fun_t(R (T::*pm_)()): pm(pm_) {}  R operator()(T *p) const {return ((p->*pm)());} private: R (T::*pm)();}; Все кажется идеальным для работы с указателями, но ведь обобщенный указатель – это не указатель, он не знает, что такое operator->*!


Реализация gen_mem_fun

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Реализация gen_mem_fun Теперь реализация gen_mem_fun становится тривиальной:template<class R, class T> gen_mem_fun_t<R, T> gen_mem_fun(R (T::*pm)()) { return gen_mem_fun_t<R, T>(pm);}


Тестирование типа CarControl

Из книги Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ автора Мейерс Скотт

Тестирование типа CarControl При запуске или отладке проекта Windows Control Library в Visual Studio 2005 иcпользуется UserControl Test Container (испытательный контейнер пользовательских элементов управления). Это управляемый вариант теперь уже устаревшего ActiveX Control Test Container (испытательный контейнер


Создание пользовательской формы для CarControl

Из книги Технологии программирования автора Камаев В А

Создание пользовательской формы для CarControl Как и в случае любого другого .NET-типа, вы можете использовать свой элемент управления в рамках любого языка, совместимого со средой CLR. Закройте текущее рабочее пространство и создайте новый C#-проект Windows Application с именем


Совершенствование режима проектирования CarControl

Из книги Программирование на языке Пролог для искусственного интеллекта автора Братко Иван

Совершенствование режима проектирования CarControl Чтобы продемонстрировать использование некоторых из этих новых атрибутов, закройте проект CarControlTestForm и снова откройте проект CarControlLibrary. Давайте создадим пользовательскую категорию (назвав ее "Конфигурация машины"), в


Глава 5 Реализация

Из книги 1С: Бухгалтерия 8 с нуля. 100 уроков для начинающих автора Гладкий Алексей Анатольевич

Глава 5 Реализация В основном разработка программы сводится к написанию определений классов (и шаблонов классов) и объявлений функций (и шаблонов функций). Если сделать это правильно, то реализация уже не так сложна. Однако на некоторые моменты все же стоит обратить


12.10. РЕАЛИЗАЦИЯ

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

12.10. РЕАЛИЗАЦИЯ Обычно на этапе кодирования всплывают все неприятные проблемы, которые только можно себе представить. Чем больше проект, тем больше проблем. Вот почему первые три шага так важны.Если все из вышеописанных шагов полностью пройдены, то реализация программы


14.5. Реализация

Из книги Операционная система UNIX автора Робачевский Андрей М.

14.5. Реализация Теперь мы приступим к реализации нашей оболочки, следуя тем идеям, которые обсуждались в предыдущем разделе. На рис. 14.9 показаны основные объекты, которыми манипулирует оболочка. Цель — это вопрос, подлежащий рассмотрению; Трасса — это цепочка,


2-й шаг. Реализация проекта

Из книги автора

2-й шаг. Реализация проекта Теперь, когда план составлен, вы можете со всей серьезностью приступить к программированию. Возьмите в качестве отправной точки разработку внешнего вида формы, дополните ее небольшим, но тщательно выверенным фрагментом программного кода, и вы


Урок № 84. Реализация НМА

Из книги автора

Урок № 84. Реализация НМА Нематериальные активы, как и любые другие активы, могут быть реализованы на сторону. Для отражения в учете операций по реализации нематериальных активов в программе "1С:Бухгалтерия 8" предназначен документ "Передача НМА", с которым мы познакомимся


11.2. Реализация

Из книги автора

11.2. Реализация Во всех более-менее сложных C-программах требуется тщательно продумать организацию, чтобы сохранить модульность и обеспечить удобство сопровождения. Наша демонстрационная программа разделена на четыре главных исходных файла.В каждом исходном файле


Реализация TCP/IP

Из книги автора

Реализация TCP/IP Прежде чем перейти к описанию функционирования модулей протоколов TCP/IP, рассмотрим еще одну структуру данных, называемую управляющим блоком протокола (Protocol Control Block, PCB), который в случае TCP/IP называется Internet PCB, и представлен структурой inpcb, определенной в