Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизPanel1.Handle - обработка изображения Найти похожие ветки
← →
progress (2004-10-27 18:28) [0]У меня есть примерчик использования видеозахвата (DirectShow). Работает, выводит результат на панель ... А мне надо взять это изображение и поместить, например, в TImage, для дальнейщей обработки.
пробовал:
Image1.Canvas.Handle := GetDC(Panel1.Handle) - не выходит, а как мне всё таки решить данную проблему???
← →
debuger © (2004-10-27 19:21) [1]Вроде так. С панельки кадр сдираю в битпаму.
var
srcDC, destDC: HDC;
hbm: HBITMAP;
currentFrame: Graphics.TBitMap;
begin
currentFrame := TBitMap.Create;
srcDC := GetDC( Panel1.Handle );
destDC := CreateCompatibleDC( srcDC );
// создаем битпам
hbm := CreateCompatibleBitMap( srcDC,
width,
height );
SelectObject( destDC, hbm );
// копируем содержимое
BitBlt( destDC, 0, 0, width, height,
srcDC, 0, 0, SRCCOPY );
currentFrame.Handle := hbm;
// используем текущий кадр сдертый в битмап
// после использования удаляем все лишнее
DeleteDC( destDC );
ReleaseDC( Panel1.Handle );
DeleteObject( hbm );
end;
← →
progress (2004-10-28 10:07) [2]Возникла ещё одна проблемма:
а как бороться с тем, что когда панель находится не полностью на экране (точнее в её видимой части), при сохранении в файл изображения с битмамы, то картинка получается малось "обрезанная". Часть та которая была в видимой части экрана видна, а та которая выходила за её пределы просто ... белая?
← →
debuger © (2004-10-28 15:02) [3]Вроде никак.
Например, можно рисовать на рабочем столе :) Он за пределы не уйдет.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.035 c