N
ni_ck
Unregistered / Unconfirmed
GUEST, unregistred user!
用ImgScan进行证件扫描,用的是专用的证件扫描仪,每次扫描结束的时候都出现"Access violation at address 77F643D1 in module 'GDI32.dll'.read of address 0113F7E8"的错误,都不知道哪里出了问题!
以下是程序的代码:
procedure TFmScan.suiButtonSelectClick(Sender: TObject);
begin
ImgScan1.ShowSelectScanner; //选择系统中已安装的扫描仪
end;
procedure TFmScan.suiButtonScanClick(Sender: TObject);
begin
ImgScan1.OpenScanner;
if not ImgScan1.ScannerAvailable then
begin
dbs.ShowMsgDlgInf('扫描仪没准备好!');
Exit;
end
else
try
begin
ImgScan1.Image:=ExtractFilePath(application.Name)+'99.bmp';
ImgScan1.zoom:=100;
ImgScan1.StartScan;
Application.ProcessMessages;
end;
finally
ImgScan1.CloseScanner;
Image1.AutoSize:=true;
Image1.Picture.LoadFromFile(ExtractFilePath(application.Name)+'99.bmp');
Image1.Top:=(suiImagePanel1.Height-Image1.Height) div 2;
Image1.Left:=(suiImagePanel1.Width-Image1.Width) div 2;
Image1.AutoSize:=false;
end;
end;
procedure TFmScan.suiButtonCancelClick(Sender: TObject);
begin
Close;
end;
procedure TFmScan.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DeleteFile(ExtractFilePath(application.Name)+'99.bmp');
DeleteFile(ExtractFilePath(application.Name)+'temp.bmp');
end;
procedure TFmScan.suiButtonLeftClick(Sender: TObject);
var
i,j:integer;
TmpBmp:TBitMap;
begin
TmpBmp:=TBitMap.Create;
rsrBmp:=TBitMap.Create;
rsrbmp:= Image1.Picture.Bitmap;
TmpBmp.Width:=rsrbmp.Height;
Tmpbmp.Height:=rsrBmp.Width;
try
for i:=0 to rsrbmp.Width-1 do
for j:=0 to rsrBmp.Height-1 do
TmpBmp.Canvas.Pixels[rsrBmp.Height-j-1,i]:=rsrbmp.Canvas.Pixels[i,j];
Image1.AutoSize:=true;;
Image1.Picture.Bitmap:=tmpbmp;
Image1.AutoSize:=false;
Image1.Top:=(suiImagePanel1.Height-Image1.Height) div 2;
Image1.Left:=(suiImagePanel1.Width-Image1.Width) div 2;
finally
TmpBmp.Free;
end;
end;
procedure TFmScan.suiButtonRightClick(Sender: TObject);
var
i,j:integer;
TmpBmp:TBitMap;
begin
TmpBmp:=TBitMap.Create;
rsrBmp:=TBitMap.Create;
rsrbmp:= Image1.Picture.Bitmap;
TmpBmp.Width:=rsrbmp.Height;
Tmpbmp.Height:=rsrBmp.Width;
try
for i:=0 to rsrbmp.Width-1 do
for j:=0 to rsrBmp.Height-1 do
TmpBmp.Canvas.Pixels[rsrBmp.Height-j-1,i]:=rsrbmp.Canvas.Pixels[i,j];
Image1.AutoSize:=true;;
Image1.Picture.Bitmap:=tmpbmp;
Image1.AutoSize:=false;
Image1.Top:=(suiImagePanel1.Height-Image1.Height) div 2;
Image1.Left:=(suiImagePanel1.Width-Image1.Width) div 2;
finally
TmpBmp.Free;
end;
end;
以下是程序的代码:
procedure TFmScan.suiButtonSelectClick(Sender: TObject);
begin
ImgScan1.ShowSelectScanner; //选择系统中已安装的扫描仪
end;
procedure TFmScan.suiButtonScanClick(Sender: TObject);
begin
ImgScan1.OpenScanner;
if not ImgScan1.ScannerAvailable then
begin
dbs.ShowMsgDlgInf('扫描仪没准备好!');
Exit;
end
else
try
begin
ImgScan1.Image:=ExtractFilePath(application.Name)+'99.bmp';
ImgScan1.zoom:=100;
ImgScan1.StartScan;
Application.ProcessMessages;
end;
finally
ImgScan1.CloseScanner;
Image1.AutoSize:=true;
Image1.Picture.LoadFromFile(ExtractFilePath(application.Name)+'99.bmp');
Image1.Top:=(suiImagePanel1.Height-Image1.Height) div 2;
Image1.Left:=(suiImagePanel1.Width-Image1.Width) div 2;
Image1.AutoSize:=false;
end;
end;
procedure TFmScan.suiButtonCancelClick(Sender: TObject);
begin
Close;
end;
procedure TFmScan.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DeleteFile(ExtractFilePath(application.Name)+'99.bmp');
DeleteFile(ExtractFilePath(application.Name)+'temp.bmp');
end;
procedure TFmScan.suiButtonLeftClick(Sender: TObject);
var
i,j:integer;
TmpBmp:TBitMap;
begin
TmpBmp:=TBitMap.Create;
rsrBmp:=TBitMap.Create;
rsrbmp:= Image1.Picture.Bitmap;
TmpBmp.Width:=rsrbmp.Height;
Tmpbmp.Height:=rsrBmp.Width;
try
for i:=0 to rsrbmp.Width-1 do
for j:=0 to rsrBmp.Height-1 do
TmpBmp.Canvas.Pixels[rsrBmp.Height-j-1,i]:=rsrbmp.Canvas.Pixels[i,j];
Image1.AutoSize:=true;;
Image1.Picture.Bitmap:=tmpbmp;
Image1.AutoSize:=false;
Image1.Top:=(suiImagePanel1.Height-Image1.Height) div 2;
Image1.Left:=(suiImagePanel1.Width-Image1.Width) div 2;
finally
TmpBmp.Free;
end;
end;
procedure TFmScan.suiButtonRightClick(Sender: TObject);
var
i,j:integer;
TmpBmp:TBitMap;
begin
TmpBmp:=TBitMap.Create;
rsrBmp:=TBitMap.Create;
rsrbmp:= Image1.Picture.Bitmap;
TmpBmp.Width:=rsrbmp.Height;
Tmpbmp.Height:=rsrBmp.Width;
try
for i:=0 to rsrbmp.Width-1 do
for j:=0 to rsrBmp.Height-1 do
TmpBmp.Canvas.Pixels[rsrBmp.Height-j-1,i]:=rsrbmp.Canvas.Pixels[i,j];
Image1.AutoSize:=true;;
Image1.Picture.Bitmap:=tmpbmp;
Image1.AutoSize:=false;
Image1.Top:=(suiImagePanel1.Height-Image1.Height) div 2;
Image1.Left:=(suiImagePanel1.Width-Image1.Width) div 2;
finally
TmpBmp.Free;
end;
end;