Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Задание 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. Измените положения картинок внизу так, чтобы они были вперемешку.
|