Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовые / Язык программирования Сpp 25.09.11.doc
Скачиваний:
114
Добавлен:
10.05.2015
Размер:
10.13 Mб
Скачать

Классы для хранения графических объектов.

C++Builderдля хранения графических объектов использует следующие классы:TBitmap, TIcon, TMetafile.Все они являются наследниками абстрактного, базового клаассTGraphic. Кроме того, определен классTPicture, который может хранить любой из этих объектов. Этот класс может содержать объекты определенные пользователем, производные отTGraphic. Для доступа к графическому объекту следует использовать свойствоTPicture->TGraphic, а если тип графического объекта известен, то можно непосредственно обратиться к свойствуTPicture->Bitmap, TPicture->Icon, TPicture->Metafile.

Для всех рассмотренных классов определены методы загрузки и сохранения в файл:

void __fasstcall LoadFromFile(const Sysytem::AnsiString Filename);

void __fasstcall SaveToFile(const Sysytem::AnsiString Filename);

При этом для классов TBitmap, TIcon, TMetafile форматфайладолженсоответствоватьклассуобъекта.Объекткласса TPicture может оперировать с любым форматом.

Для всех рассмотренных классов определены методы присвоения значений объектов:

void __fasstcall Assign(TPersistent* Sourse);

Рассмотрим пример, в котором создается объект Bitmapдля загрузки картинки в память. Точнее создается не сам объект, а указатель.

Graphics::TBitmap *Bitmap=new Graphics::TBitmap;

//далее графический файл MyBitmap.bmp загружается в объект

Bitmap->LoadFromFile("MyBitmap.bmp");

//теперь графический объет сохраняется в новом файле

Bitmap->SaveToFile("BitmapMy.bmp");

Пример. Поместим на форму объектыImage, Labelи две копкиBitBtn. В раздел директивы препроцессора добавим две строки

#include <jpeg.hpp> // обеспечивает работу с JPEG-иллюстрациями

#include <FileCtrl.hpp> // для доступа к функции SelectDirectory

//Объявим две новые переменные

AnsiString aPath; // каталог, в котором находится иллюстрация

TSearchRec aSearchRec; // результат поиска файла

//Обработчик первой кнопки

//-------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)

{

// щелчок на кнопке Каталог

If (SelectDirectory( //Компонент библиотеки

"Выберите каталог, в котором находятся иллюстрации","",aPath)!= 0)

{

// пользователь выбрал каталог и щелкнул на кнопке ОК

aPath = aPath + "\\";

FirstPicture(); // вывести иллюстрацию

}

}

//======================================================

//Создадим функцию, не забыв объявить ее в файле с расширением .h

void TForm1::FirstPicture()

{// найти и вывести первую картинку

Image1->Visible = false; // скрыть компонент Imagel

BitBtn2->Enabled = false; // кнопка Дальше недоступна

Label1->Caption = "";

/* поиск первого файла в директории с помощью компонента

VCL FindFirst*/

// faAnyFile – значит любой файл

if ( FindFirst(aPath+ "*.jpg", faAnyFile, aSearchRec) == 0)

{

Image1->Picture->LoadFromFile(aPath+aSearchRec.Name);

Image1->Visible = true;

Label1->Caption = aSearchRec.Name;

if ( FindNext(aSearchRec) == 0) // найти след, иллюстрацию

{

// иллюстрация есть

BitBtn2->Enabled = true; // теперь кнопка Дальше доступна

}

}

}

//===============================================================

//Обработчик создания формы

void __fastcall TForm1::FormCreate(TObject *Sender)

{

aPath = ""; // текущий каталог — каталог, из которого

// запущена программа

Image1->AutoSize = false;

Image1->Proportional = true;

BitBtn2->Enabled = false;

FirstPicture(); // показать картинку, которая

// есть в каталоге программы

}

//===============================================================

//Обработчик второй кнопки

void __fastcall TForm1::BitBtn2Click(TObject *Sender)

{

// щелчок на кнопке Дальше

Image1->Picture->LoadFromFile(aPath+aSearchRec.Name);

Label1->Caption = aSearchRec.Name;

if ( FindNext(aSearchRec) != 0) // найти след, иллюстрацию

{

// иллюстраций больше нет

BitBtn2->Enabled = false; // теперь кнопка Дальше недоступна

}

}

//---------------------------------------------------------------