DSPACK用来抓拍图片,但是使用ISpecifyPropertyPages却不能设置抓拍窗口的大小,请问哪位大侠肯出手相救.

解决方案 »

  1.   

    TScreen? Do you know DSPack ?
      

  2.   

    var
      PinList : TPinList ;
      VideoMediaTypes, AudioMediaTypes: TEnumMediaType;
    begin
      PinList := TPinList.Create(filter as IBaseFilter);
      VideoMediaTypes := TEnumMediaType.Create;
      VideoMediaTypes.Assign(PinList.First);
    //  self.ShowFilterPropertyPage(self,Filter as IBaseFilter) ;
    //  ShowFilterPropertyPage(self.Handle,(PinList[0] as IBaseFilter)) ;
      FilterGraph.Stop ;
      FilterGraph.Active := False ;
      VideoWindow.FilterGraph := nil ;
      SampleGrabber.FilterGraph := nil ;
      FilterGraph.Active := True ;
      SetVideoFormat(Filter,MEDIASUBTYPE_RGB555,720,576,16,29.97);
      with (PinList.First as IAMStreamConfig) do
            SetFormat(VideoMediaTypes.Items[0].AMMediaType^);
      with (PinList[1] as IAMStreamConfig) do
            SetFormat(VideoMediaTypes.Items[0].AMMediaType^);  ShowPinPropertypage(self.Handle,PinList[0] as IPin);
      ShowFilterPropertyPage(self.Handle,Filter as IBaseFilter) ;
      VideoWindow.FilterGraph := FilterGraph;
      SampleGrabber.FilterGraph := filterGraph ;
      with FilterGraph as ICaptureGraphBuilder2 do
      begin
        RenderStream(@PIN_Category_Preview,nil,(filter as IBaseFilter),nil,VideoWindow as IBaseFilter);
        RenderStream(@PIN_Category_Capture,nil,(filter as IBaseFilter),nil,SampleGrabber as IBaseFilter);
      end;
      FilterGraph.Play;
    //  ShowPinPropertypage(self.Handle,PinList[0] as IPin);
    {
      FilterGraph.Stop ;
      FilterGraph.Active := False ;
      SampleGrabber.FilterGraph := Nil ;
      FilterGraph.Active := True ;
      SampleGrabber.FilterGraph := FilterGraph ;
        showPinPropertyPage(self.Handle,PinList[0] as IPin);//  FilterGraph.Active := False ;
    //  FilterGraph.Active := True ;
      FilterGraph.Play;
      }
      pinList.Free;
      VideoMediaTypes.Free;
    end;