BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/VideoCapture/MView_VideoCapture/umain.pas

84 lines
1.8 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, imageenview, ieview, iemview;
type
TMainForm = class(TForm)
ButtonAddInput: TButton;
ImageEnMView1: TImageEnMView;
procedure ButtonAddInputClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FImageEnViews: TList;
public
{ Public declarations }
procedure NewFrame(Sender: TObject);
end;
var
MainForm: TMainForm;
implementation
uses uselectinput;
{$R *.dfm}
{$R WindowsTheme.res}
procedure TMainForm.NewFrame(Sender: TObject);
var
ie: TImageEnView;
idx: integer;
begin
ie := Sender as TImageEnView;
idx := ie.Tag;
ie.IO.DShowParams.GetSample(ImageEnMView1.GetTIEBitmap(idx));
ImageEnMView1.ReleaseBitmap(idx);
ImageEnMView1.UpdateImage(idx);
end;
procedure TMainForm.ButtonAddInputClick(Sender: TObject);
var
ie: TImageEnView;
begin
ie := TImageEnView.Create(self);
ie.Parent := self;
ie.Visible := false;
ie.OnDShowNewFrame := NewFrame;
FormSelectInput.ie := ie;
if FormSelectInput.ShowModal = mrOK then
begin
FImageEnViews.Add(ie);
ie.IO.DShowParams.SetVideoInput(FormSelectInput.ComboBoxVideoInput.ItemIndex, StrToIntDef(FormSelectInput.EditVideoSource.Text, 0));
ie.IO.DShowParams.EnableSampleGrabber := true;
ie.IO.DShowParams.Connect;
ie.IO.DShowParams.Run;
ie.Tag := ImageEnMView1.AppendImage(100, 100);
end
else
ie.Free();
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
FImageEnViews := TList.Create();
end;
procedure TMainForm.FormDestroy(Sender: TObject);
var
i: integer;
begin
for i := 0 to FImageEnViews.Count - 1 do
(TObject(FImageEnViews[i]) as TImageEnView).Free();
end;
end.