![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение битмапа с TVideoWindow библиоте DSPack [D7]
Wistler © (2004-08-03 14:34:00)Нужно каждую секунду снимать изображение и сохранять на диск.
МетодImage1.Canvas.CopyRect(Rect(0,0,319,239),VideoWindow.Canvas,Rect(0,0,319,239))работает, только если ничто не загораживает VideoWindow.
Попытка использовать PaintTo выдает черный квадрат.
Есть ещё предложения?
WondeRu (2004-08-03 17:40:00) [1]глянь здесь http://www.delphimaster.ru/cgi-bin/forum.pl?id=1091099262&n=7
Profi (2004-08-03 14:54:00) [2]Я делал так!
procedure izvv(nom:integer);
var
Stream: TMemoryStream;
MediaSeeking: IMediaSeeking;
StopPosition, CurrentPosition: int64;
CurrentPos, StopPos: int64;
MlsCurrentPos, MlsStopPos: Cardinal;
begin
with form1 do begin
fg.ClearGraph;
fg.RenderFile(dir+'\video\'+flb.Items[nom]);
fg.Play;
FG.QueryInterface(IMediaSeeking, MediaSeeking);
if assigned(MediaSeeking) then
if Succeeded(MediaSeeking.GetDuration(StopPos)) then
if Succeeded(MediaSeeking.GetCurrentPosition(CurrentPos)) then
begin
MlsCurrentPos := RefTimeToMiliSec(CurrentPos);
MlsStopPos := RefTimeToMiliSec(StopPos);
tb.Min := 0;
tb.Max := MlsStopPos div 1000;
tb.Position := MlsCurrentPos div 1000;
end;
mediaseeking.GetStopPosition(stopposition);
currentPosition:=round((stopposition*499.9)) div tb.Max;
MediaSeeking.SetPositions(CurrentPosition, AM_SEEKING_AbsolutePositioning, StopPosition, AM_SEEKING_NoPositioning);
fg.Pause;
sleep(1000);
vr.Text:=timetostr(mlsStopPos/MiliSecPerDay);
Stream:= TMemoryStream.Create;
vw.VMRGetBitmap(stream);
im.Picture.Bitmap.LoadFromStream(stream);
stream.Free;
end;
end;