3492 ГРАФИКА В DELPHI - Страница 5

2.5.4. Использование свойства Glyph. Компоненты SpeedButton и BitBtn поддерживают свойство Glyph, позволяющее динамически изменять пиктограммы кнопок. При построении изображений необходимо учитывать, что Delphi всегда принимает за цвет прозрачности цвет пикселя, расположенного в левом нижнем углу изображения.

2.5.5. Создание растрового фона экранной формы. В следующем фрагменте кода осуществляется загрузка растрового файла и заполнение при помощи кисти Brush фона Canvas формы FirstForm:

Var Bitmap: TBitmap;

begin

Bitmap := TBitmap.Create;

try

Bitmap.LoadFromFile('Background.bmp');

FirstForm.Canvas.Brush.Bitmap := Bitmap;

FirstForm.Canvas.FillRect(Rect(0,0,100,100));

finally

FirstForm.Canvas.Brush.Bitmap := nil;

Bitmap.Free;

end;

end;

Chapter Двадцать четыре Примечание. Кисть

 

3. Последовательность выполнения работы

1. Ознакомьтесь с материалами разделов 1 и 2 лабораторной работы. Получите у преподавателя исходные данные для разработки приложения.

2. Запустите Delphi. В рабочем поле ИСР должна появиться пустая форма для создания нового приложения. Если она не появилась, выберите пункт меню File | New Application.

3. Создайте главное меню приложения, для чего выберите на странице Standard компонент MainMenu и перетащите его на форму. Двойным щелчком по пиктограмме меню вызовите редактор меню и введите пункты этого меню (например, «Файлы», «Выход»). Заполните свойства Caption соответствующих пунктов главного меню.

4. Создайте подменю (выпадающее меню), щелкнув «мышью» в редакторе меню по пункту главного меню. Например, для пункта «Файлы» создайте подпункты «Открыть», «Сохранить». Для этого заполните свойства Caption соответствующих пунктов выпадающего меню.

Примечание. При вводе большого числа пунктов выпадающего меню для улучшения восприятия рекомендуется выделять группы пунктов. Для этих целей используется разделительная линия, которая образуется в том случае, если вместо имени в свойстве Caption указать символ «тире».

5. Определите реакцию на пункты меню. Для этого произведите двойной щелчок по выбранному пункту меню, в результате чего активизируется окно редактора исходного кода ИСР. В нем буде создана заготовка для метода (процедуры), выполняющего обработку выбора пункта меню. Например, для пункта главного меню «Выход» должен быть создан следующий код:

procedure TForm1.N2Click(Sender: TObject);

begin

 

end;

Дополним его единственным оператором Close, завершающим работу приложения:

procedure TForm1.N2Click(Sender: TObject);

begin

Close;

end;

6. Протестируйте работу приложения, запустив его на выполнение (пункт меню ИСР Run | Run, кнопка Run или клавиша F9). Нажав пункт меню «Выход», убедитесь, что приложение завершило работу.

7. Определите реакцию на выбор остальных пунктов меню. Например,  дополните приложение окнами диалога (для использования в пунктах «Открыть» и «Сохранить»), для чего откройте страницу палитры компонентов Dialogs и перенесите на форму вашего приложения пиктограммы OpenPictureDialog и SavePictureDialog.

Для переключения между редактором текста и редактором форм воспользуйтесь клавишей F12.

Для определения реакции на выбор пункта меню «Открыть» воспользуйтесь информацией из раздела 2.3.2. Аналогичным образом определите реакцию на пункт «Сохранить».

8. Создайте на форме объект Image (страница Additional) для размещения в нем изображений, загружаемых из внешних файлов. В свойстве Align (выравнивание) определите значение alClient (выравнивание в пределах клиентской области окна)

9. В методах (процедурах) реакции на пункты «Открыть» и «Сохранить» добавьте код, помещающий изображение из файлов (для простоты будем первоначально ориентироваться на ВМР-файлы) в клиентскую область окна. Например:

if OpenPictureDialog1.Execute then

Image1.Picture.Bitmap.LoadFromFile(OpenPictureDialog1.FileName);

или

if SavePictureDialog1.Execute then

Image1.Picture.Bitmap.SaveToFile(SavePictureDialog1.FileName);

10. Создайте панель для кнопок быстрого доступа к пунктам меню, для чего поместите на форму компонент ToolBar. Щелкнув по нему правой кнопкой мыши, выберите из всплывающего меню пункт New Button (Новая кнопка). В свойстве MenuItem выберите соответствующий пункт меню. Повторите эту операцию для всех необходимых кнопок / пунктов меню.

11. Для оформления кнопок панели создайте три объекта ImageList – для хранения пиктограмм кнопок в рабочем состоянии (учтите, что возможны два варианта - курсор над кнопкой и вне кнопки) и в недоступном состоянии.

Для создания изображений пиктограмм воспользуйтесь редактором Image Editor (пункт Tools | Image Editor).

Для добавления созданных изображений в объекты ImageList необходимо запустить редактор списков изображений, для чего произведите двойной щелчок по пиктограмме объекта, расположенной на форме.

12. При помощи редактора Image Editor создайте пиктограмму вашего приложения и подключите ее к проекту (пункт меню Project | Options на странице Application – кнопка Load Icon).

13. Продемонстрируйте полученные результаты преподавателю.

4. Контрольные вопросы

  1. Какие окна включает в себя ИСР Delphi?
  2. Какие панели входят в состав главного окна ИСР Delphi?
  3. Перечислите графические компоненты, располагающиеся на странице палитры компонентов Delphi.
  4. Перечислите графические компоненты, располагающиеся на странице Standard палитры компонентов Delphi.
  5. Перечислите графические компоненты, располагающиеся на странице Additional палитры компонентов Delphi.
  6. Перечислите графические компоненты, располагающиеся на странице Win32 палитры компонентов Delphi.
  7. Перечислите графические компоненты, располагающиеся на странице System палитры компонентов Delphi.
  8. Перечислите графические компоненты, располагающиеся на странице Samples палитры компонентов Delphi.
  9. Перечислите графические компоненты, располагающиеся на странице Dialogs палитры компонентов Delphi.
  10. Перечислите атрибуты Windows GDI.
  11. Перечислите функции, связанные атрибутом GDI «Растровое изображение».
  12. Перечислите функции, связанные атрибутом GDI «Кисть».
  13. Перечислите функции, связанные атрибутом GDI «Перо».
  14. Нарисуйте иерархию классов Delphi, связанных с графикой.
  15. Перечислите свойства объекта Canvas.
  16. Перечислите методы объекта Canvas.
  17. Как осуществить доступ к отдельной точке изображения средствами GDI? Напишите фрагмент программы.
  18. Как осуществить вывод растрового изображения средствами GDI? Напишите фрагмент программы.
  19. Для работы с какими объектами предназначен класс TGraphics?
  20. Какие объекты входят в класс TGraphicControl?
  21. Для каких целей предназначен объект TImage? Напишите фрагменты программы, демонстрирующие использование объекта TImage.
  22. Для каких целей предназначен объект TShape? Напишите фрагменты программы, демонстрирующие использование объекта TShape.
  23. Для каких целей предназначен объект TPaintBox? Какие свойства поддерживает этот объект?
  24. Каким образом кодируется цвет в Windows GDI?
  25. Какие стандартные цветовые палитры Windows вы знаете? Чем они отличаются друг от друга?
  26. Каким образом осуществляется выделение групп пунктов внутри стандартного меню Windows?
  27. Перечислите режимы наложения графических объектов, поддерживаемые Windows GDI (свойство CopyMode объекта Canvas)?
  28. Напишите фрагмент программы, позволяющий загружать ВМР-изображение и сохранять его в JPEG-файле.
  29. Перечислите порядок, в котором обрабатываются события при загрузке формы.
  30. Как различаются между собой Paint-события: Invalidate, Update и Refresh?
  31. Когда используется свойство Glyph и как узнать, какой цвет определяет прозрачность?
  32. Как поместить растровое изображение на фон (Canvas) экранной формы?

5. Библиографический список

1.  Жуков А. Изучаем Delphi. М.: Питер, 2002. 352 с.

2.  Тейксейра С., Пачеко К. Delphi 5. Руководство разработчика. Т. 1. Основные методы и технологии программирования. М.: Вильямс, 2001. 832 с.

3.  Свиридов Ю., Тюкачев Н.. Delphi 5: Создание мультимедийных приложений: Учебный курс. М.: Нолидж, 2000. 384 с.

4.  Бобровский С. Delphi 5: Учебный курс. СПб.: Питер, 2002. 640 с.

5.  Карпов Б. Delphi: Специальный справочник. СПб.: Питер, 2002. 688 с.

6.  Бобровский С. Delphi 6 и Kylix: Библиотека программиста. СПб.: Питер, 2002. 560 с.

7.  Гофман В., Хомоненко А. Delphi 6. СПб.: БХВ-Петербург, 2002. 1152 с.

8.  Архангельский А.Я. Delphi 7: Справочное пособие. М.: БИНОМ, 2003. 1024 с.

9.  Юань Фень. Программирование графики для Windows. СПб.: Питер, 2002. 1072 с.

 

 


[1] Windows GDI (Graphic Device Interface) – интерфейс графических устройств Windows, который представляет собой набор библиотек, содержащих функции для построения графического интерфейса пользователя.

[2] Среда  Delphi является настраиваемой, поэтому пользователь может сам установить ту конфигурацию, которая наиболее подходит для его работы (например, при помощи настроек пунктов меню View | Toolbars | Customize или Component | Configure Palette).

[3] RLERun Length Encoding – метод группового кодирования, при котором серии повторяющихся пикселей заменяются двумя числами – количеством пикселей в серии и цветом этих пикселей.

[4] Если определены оба свойства – Bitmap и Style, то при выполнении программы вид заливки будет определяться свойством, определенным в программе последним.