Графика и мультимедиа___________________________________355

Тогда приведенная выше процедура загрузки файла сокращается до

if (OpenPictureDialogl->Execute())
(

Bitmap = new Graphics::TBitmap;

Bitmap->LoadFromFile(OpenPictureDialogl->FileName);

Canvas->Draw(0,0,Bitmap);

t

Оператор Bitmap->Free, содержавшийся ранее в этой процедуре, переносится
в обработчик события формы OnDestroy. Тогда в течение всего времени выполне-
ния вашего приложения вы будете иметь копию картинки в компоненте Bitmap и
вам достаточно ввести в обработчик события OnPaint формы всего один оператор:

if (Bitmap != NULL) Canvas->Draw(0,0,Bitmap);

Оператор if используется, чтобы избежать ошибочного обращения к Bitmap,
пока графический файл еще не загружался и объект Bitmap не создан.

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

Сделанный вами обработчик перерисовывает все изображение, хотя, может
быть, испорчена только часть его. При больших изображениях это может сущест-
венно замедлять перерисовку и вызывать неприятные зрительные эффекты. Пере-
рисовку можно существенно ускорить, если перерисовывать только испорченную
область канвы. У канвы есть свойство ClipRect типа TRect, которое в момент обра-
ботки события OnPaint указывает область, которая подлежит перерисовке. Поэто-
му более экономным будет обработчик:

if (Bitmap != NULL)

Canvas->CopyRect(Canvas->ClipRect,Bitmap->Canvas,Canvas->ClipRect) ;

Он перерисовывает только область ClipRect, которая испорчена.

5.2 Мультимедиа и анимация

5.2.1 Звук

5.2.1.1 Типы звуковых и мультимедиа файлов

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

Наиболее простым звуковым файлом является волновой файл .wav. В нем за-
писано цифровое представление информации о волновой форме электрического
сигнала, соответствующего каждому звуку. Волновой файл «не знает» вообще ни-
чего о том, что такое звук и что он означает; поэтому для хранения звукового кли-
па приходится запоминать массу информации.

Другим часто применяемым типом файлов-носителей являются файлы цифро-
вого интерфейса музыкальных инструментов (MIDI). Файлы .midi используются
для хранения музыкальных фрагментов. В этих файлах звук хранится в виде дан-
ных о том, на каких инструментах исполняются определенные ноты и как долго
они звучат. Если вы знакомы с музыкой, то можете рассматривать содержимое та-
кого файла как цифровой эквивалент дирижерской партитуры. Одним из главных
преимуществ MIDI является то, что файлы получаются сравнительно небольшими.
Файлы MIDI относятся к волновым файлам примерно так же, как метафайлы — к
файлам .bmp. В обоих случаях файлы первого типа «понимают», какие данные

12*