![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DSpack фильтры
izja © (2010-11-20 18:28:00)удаляю Video Renderer и добавляю свой фильтр
FDC - канвас формы
function TBCmyRenderer.DoRenderSample(MediaSample: IMediaSample): HResult;
var
Bits: PByte;
begin
if (MediaSample = nil) then Exit(E_POINTER);
MediaSample.GetPointer(Bits);
StretchDIBits(FDC ,
0, 0, FWidth, FHeight,
0, 0, FWidth, FHeight,
Bits, PBitmapInfo(@FBMI)^,
DIB_RGB_COLORS, SRCCOPY);
Result := NOERROR;
end;
на форме нормально отрисовывается видео..
необходимо добавить на видео свой битмап..
пробую для начала через битмап сделать вывод, что бы потом на нем можно было что то рисовать..
создаю свой битмап:
bmp:= TBitmap.Create;
bmp.PixelFormat := pf24Bit;
c размерами формы..
FDC - уже канвас битмапа
StretchDIBits(FDC ,
0, 0, WidthF, Height,
0, 0, FWidth, FHeight,
Bits, PBitmapInfo(@FBMI)^,
DIB_RGB_COLORS, SRCCOPY);
тут же пытаюсь на канве формы отрисовать данный битмап через
form.canvas.draw(0,0, bmp);
на форме отрисовываеся только белый прямоугольник..
простите, я только учусь, поэтому не могу понять почему не получается.
чувствую что вероятно что - то с этими DIBits..
но почему на канву формы StretchDIBits нормально выводит а на канву битмапа нет...
izja (2010-11-20 18:45:00) [1]второй более не понятный момент:
videoF.Canvas.lock;
StretchDIBits(videoF.Canvas.Handle,
0, 0, FWidth, FHeight,
0, 0, FWidth, FHeight,
Bits, PBitmapInfo(@FBMI)^,
DIB_RGB_COLORS, SRCCOPY);
videoF.Canvas.TextOut(0,0, timeToStr(time));
videoF.Canvas.unlock;
в первых секундах на форме отрисовывается мельком время, но потом только видео поток..
почему так происходит?