Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Задание 3. Проект “Собери картинку”






Проект “Собери картинку”

Разработать проект, в котором из четырех частей методом перетаскивания необходимо собрать картинку. На этапе разработки форма должна иметь следующий вид:

1. Создайте новый проект в Delphi и сохраните его в отдельной папке “Собери картинку”;

2. Разместите на форме 4 компонента Image (нижний ряд) одинакового размера, необходимые для изображения частей картинки;

3. Разместите на форме 4 компонента Shape, размеры которых одинаковые и равны размерам компонентов Image. Компоненты Shape будут служить разметкой для сборки единой картинки. Задайте цвет этих компонентов равным цвету формы;

4. Скопируйте в свою папку картинку *.bmp, с которой будете работать и запомните её полное имя;

5. В четырех компонентах Image будут находиться части вашей картинки. Эти части получаться вырезанием соответствующих областей из целой картинки с помощью методов компонента Image. Целая картинка будет храниться в компоненте Image, но этот компонент не размещается на форме на этапе разработки, а создается динамически во время выполнения программы. Обработайте событие OnCreate для формы следующим образом:

procedure TForm1.FormCreate(Sender: TObject);

Var

Pict: TImage;

Begin

{создаем динамически компонент Image}

Pict: = TImage.Create(Self);

{размеры картинки автоматически адаптируются к размерам

Image}

Pict.AutoSize: = true;

{загружаем в Image картинку из файла}

Pict.Picture.LoadFromFile({полное имя картинки});

{копируем область изображения, указанную в Rect, из канвы

Pict.Canvas в область ClientRect соответствующего компонента}

Image1.Canvas.CopyRect(Image1.ClientRect, Pict.Canvas,

Rect(0, 0, Pict.Width div 2, Pict.Height div 2));

Image2.Canvas.CopyRect(Image2.ClientRect, Pict.Canvas,

Rect(Pict.Width div 2, 0, Pict.Width, Pict.Height div 2));

Image3.Canvas.CopyRect(Image3.ClientRect, Pict.Canvas,

Rect(0, Pict.Height div 2, Pict.Width div 2, Pict.Height));

Image4.Canvas.CopyRect(Image4.ClientRect, Pict.Canvas,

Rect(Pict.Width div 2, Pict.Height div 2, Pict.Width,

Pict.Height));

{для проверки правильности сбора картинки присваиваем

свойству Tag соответствующего Image номер. Свойство Tag

специально предназначено для хранения информации,

необходимой пользователю}

Image1.Tag: = 1;

Image2.Tag: = 2;

Image3.Tag: = 3;

Image4.Tag: = 4;

{освобождаем память, выделенную для динамически

созданного Image}

Pict.Free;

end;

6. Запустите проект и проверьте, что в компонентах Image отображаются части картинки;

7. Собирать картинку будем с помощью перетаскивания, используя технологию Drag& Drop. Установите для всех компонентов Image с помощью свойства DragMode = dmAutomatic автоматическое начало процесса перетаскивания при нажатии пользователем кнопки мыши над компонентом Image;

При перемещении над Shape курсора, перетаскивающего компонент Image, в компоненте Shape возникает событие OnDragOver. Войдите в процедуру обработки этого события для компонента Shape1

Обработайте событие OnDragOver компонента Shape1 следующим образом:

if Source is TImage then

Accept: = true;

8. После того, как пользователь после перетаскивания отпустит кнопку мыши над компонентом Shape1, в данном компоненте возникает событие OnDragDrop. Назначение параметров процедуры обработки этого события аналогично OnDragOver. Обработайте событие OnDragDrop компонента Shape1 следующим образом:

if Source is TImage then

Begin

{изменяем положение Image на форме}

(Source as TImage).Top: = (Sender as TShape).Top;

(Source as TImage).Left: = (Sender as TShape).Left;

(Sender as TShape).Tag: = (Source as TImage).Tag;

{выдвигаем Image на передний план}

(Source as TImage).BringToFront;

end;

9. Запустите проект и проверьте, что первый компонент Image можно переместить на первый Shape;

10. Аналогично обработайте событие OnDragOver и OnDragDrop для трех оставшихся Shape, выбрав в Инспекторе Объектов на вкладке Events соответствующие обработчики;

11. Установите на форму кнопку для проверки правильности сбора картинки. В обработке щелчка по этой кнопке проверить соответствие свойства Tag компонентов Shape номерам картинок. В случае удачи выдать сообщение “Правильно! ”, иначе – “Не правильно! ”

12. Проверьте работу проекта.

13. Добавьте возможность выбора файла другого рисунка, используя диалог OpenPictureDialog

14. Измените положения картинок внизу так, чтобы они были вперемешку.







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.