с одной палитрой, будет вполне
Раз нам приходится работать с одной палитрой, будет вполне логично сохранить ее в начале съемки клипа. Давайте посмотрим, как это делается. Начнем с
/b> ИЦГ Глава 11. Клипы
delete pip;
return pPal;
}
Для получения цветов палитры от интерфейса используется структура LOGPALETTE; они передаются приложению в объекте CPalette. Класс CPalette, входящий в библиотеку MFC, хорошо подходит для хранения набора цветов; мы убедимся в этом, когда будем рассматривать воспроизведение клипа в окне приложения.
Функция класса CMovie, запрашивающая палитру у объекта DirectDraw в начале съемки, выглядит следующим образом:
BOOL CMovie::Record() {
Stop () ;
// Удалить все, что было записано ранее m Take.DeleteAll();
m iCurFrame =0;
// Сохранить текущую палитру ASSERT(m_p3dWnd) ;
CDirectDraw* pDD = m_p3dWnd-»GetDD () ;
ASSERT(pDD) ;
m_Take. SetPalette (pDD-»GrabPalette () ) ;
// Сохранить размер кадра CRect re;
m_p3dWnd-»GetClientRect (&rc) ;
m_Take.SetSize(re.Width(), re.Height()) ;
// Начать запись m_b!sRecording = TRUE;
return TRUE;
}
Как нетрудно убедиться, палитра сохраняется в текущем (и только в текущем!) объекте класса CMovieTakenpH помощи функции CMovieTake::SetPalette. Кроме того, мы сохраняем размер клиентной области текущего окна. Запись кадров происходит во время пассивной работы приложения.
Запись изображений из буфера
Захват изображения из буфера визуализации — задача достаточно сложная, поскольку при этом необходимо учесть множество разных тонкостей. Ниже приведен фрагмент функции CMovie::Update, вызываемой в цикле пассивной работы приложения для записи кадров по воспроизводимым изображениям.
/b> ШУ Глава 11. Клипы
// Получить указатель на объект DirectDraw в трехмерном
окне
ASSERT(m_p3dWnd) ;
CDirectDraw* pDD = m_p3dWnd-»GetDD () ;
ASSERT(pDD) ;
// Получить текущее изображение BITMAPINFO* pBMI = NULL;
BYTE* pBits = NULL;
HBITMAP hBmp = pDD-»GrabImage (&pBMI, (void**)&pBits);
ASSERT(hBmp) ;
ASSERT(pBMI) ;
ASSERT(pBits) ;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий