BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/ImageAcquisition/CameraGetImages/umain.pas

159 lines
4.0 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ieview, imageenview, iewia, imageenio, ComCtrls, ExtCtrls,
Menus, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers;
type
TMainForm = class(TForm)
ImageEnView1: TImageEnView;
Panel1: TPanel;
ProgressBar1: TProgressBar;
TreeView1: TTreeView;
MainMenu1: TMainMenu;
File1: TMenuItem;
Save1: TMenuItem;
N1: TMenuItem;
Print1: TMenuItem;
N2: TMenuItem;
Exit1: TMenuItem;
SelectCamera1: TMenuItem;
Label1: TLabel;
Label2: TLabel;
Panel2: TPanel;
lblMake: TLabel;
Label4: TLabel;
lblModel: TLabel;
Label6: TLabel;
lblDate: TLabel;
Label8: TLabel;
lblSize: TLabel;
Label10: TLabel;
chkSaveToDisk: TCheckBox;
chkLoadImage: TCheckBox;
Label11: TLabel;
ImageEnView2: TImageEnView;
Button1: TButton;
Splitter1: TSplitter;
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure FormActivate(Sender: TObject);
procedure ImageEnView1Progress(Sender: TObject; per: Integer);
procedure Exit1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure Print1Click(Sender: TObject);
procedure SelectCamera1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure FillFileNames;
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
{$R WindowsTheme.res}
uses
iexAcquire;
// fill tree view
procedure TMainForm.FillFileNames;
begin
TreeView1.Items.Clear;
ImageEnView1.IO.WIAParams.FillTreeView(TreeView1.Items, false);
TreeView1.FullExpand;
end;
// try to fill file names at startup
procedure TMainForm.FormActivate(Sender: TObject);
begin
FillFileNames;
end;
// Selected a file, load it
procedure TMainForm.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
// Get the image from the camera and save it without loading the jpeg. This means the image won't lose quality.
// Warning: here we assume your camera store images using JPEG file format!
if chkSaveToDisk.Checked then
begin
ImageEnView1.IO.WIAParams.TransferFormat := ietfJpeg;
ImageEnView1.IO.WiAParams.SaveTransferBufferAs := Node.Text + '.jpg';
end
else
ImageEnView1.IO.WiAParams.SaveTransferBufferAs := '';
ImageEnView1.IO.WiaParams.GetItemThumbnail( TIEWiaItem(Node.Data), ImageEnView2.IEBitmap );
ImageEnView2.Update;
if chkLoadImage.Checked then
begin
// Get Image
ImageEnView1.IO.WIAParams.ProcessingBitmap := ImageEnView1.IEBitmap;
ImageEnView1.IO.WIAParams.TransferFormat := ietfJpeg;
ImageEnView1.IO.WIAParams.Transfer( TIEWiaItem(Node.Data) , false);
ImageEnView1.Update;
// fill EXIF samples frame
with ImageEnView1.IO.Params do
begin
lblMake .Caption := EXIF_Make;
lblModel.Caption := EXIF_Model;
lblDate .Caption := EXIF_DateTime;
lblSize .Caption := IntToStr(EXIF_ExifImageWidth)+' x '+IntToStr(EXIF_ExifImageHeight);
end;
end;
end;
// update progress bar
procedure TMainForm.ImageEnView1Progress(Sender: TObject; per: Integer);
begin
ProgressBar1.Position:=per;
end;
// File | Close
procedure TMainForm.Exit1Click(Sender: TObject);
begin
Close;
end;
// File | Save
procedure TMainForm.Save1Click(Sender: TObject);
begin
with ImageEnView1.IO do
ImageEnView1.IO.SaveToFile( ExecuteSaveDialog('','',false,0,'') );
end;
// File | Print
procedure TMainForm.Print1Click(Sender: TObject);
begin
ImageEnView1.IO.DoPrintPreviewDialog(iedtDialog,'',false,'');
end;
// Select camera (WIA source)
procedure TMainForm.SelectCamera1Click(Sender: TObject);
begin
TreeView1.Items.Clear;
ImageEnView1.IO.SelectAcquireSource([ieaWIA]);
FillFileNames;
end;
// Delete selected image (item)
procedure TMainForm.Button1Click(Sender: TObject);
begin
ImageEnView1.IO.WiaParams.DeleteItem( TIEWiaItem(TreeView1.Selected.Data) );
FillFileNames;
end;
end.