procedure TFdazx.I1Click(Sender: TObject);
var ImageFileName,ImageFilePath:string;
begin
OPenpictureDialog1.Filter:=
'JPEG Image File (*.JPG)|*.JPG|JPEG Image File (*.JPEG)|*.JPEG|Bitmaps (*.BMP)|*.BMP|';
OpenPictureDialog1.Execute;
ImageFileName:=OpenPictureDialog1.FileName; //图片的文件名
ImageFilePath:=Extractfilepath(ImageFileName); //图片的路径
Image1.Picture.LoadFromFile(ImageFilePath); //用image1显示图片
end;
会有异常出现,为什么?
var ImageFileName,ImageFilePath:string;
begin
OPenpictureDialog1.Filter:=
'JPEG Image File (*.JPG)|*.JPG|JPEG Image File (*.JPEG)|*.JPEG|Bitmaps (*.BMP)|*.BMP|';
OpenPictureDialog1.Execute;
ImageFileName:=OpenPictureDialog1.FileName; //图片的文件名
ImageFilePath:=Extractfilepath(ImageFileName); //图片的路径
Image1.Picture.LoadFromFile(ImageFilePath); //用image1显示图片
end;
会有异常出现,为什么?
解决方案 »
- 求助~~delphi 最简单的3层结构~~纠结了2天了!!!!求大侠!!!!
- 【求教高手,如何给report machine中的 memo动态赋值】
- idhttp 9.0的问题(急)
- 请教关于packetrecords,fetchOnDemand的问题
- 用desktop做的table怎么在没装delphi的机上使用啊?
- 求memo中最后一行的位置?
- 急急急急!!!!!! Dephi如何进行文件操作
- 关于动态数组的问题!
- 有没有象速达软件中的订单中的数据控件呢?
- VB程序,编译成exe文件,这个exe文件在运行过程中如何能删除自身。即当软件30天试用期过后,让它自行消灭,从客户的硬盘中删除。
- 我做了一个dll,文件为cstprice.dll,但在调用时报如下错,怎样解决?
- 简单问题,请问如何获取字符串中的第一个字符?
procedure TFdazx.I1Click(Sender: TObject);
var ImageFileName,ImageFilePath:string;
begin
OPenpictureDialog1.Filter:=
'JPEG Image File (*.JPG)|*.JPG|JPEG Image File (*.JPEG)|*.JPEG|Bitmaps (*.BMP)|*.BMP|';
if OpenPictureDialog1.Execute then
begin
//ImageFileName:=OpenPictureDialog1.FileName; //图片的文件名
//ImageFilePath:=Extractfilepath(ImageFileName); //图片的路径
//Image1.Picture.LoadFromFile(ImageFilePath); //用image1显示图片
Image1.Picture.LoadFromFile(OperPictureDialog1.fileName); //这样写一句就可以了
end;
end;
上面这句不要!!!Image1.Picture.LoadFromFile(ImageFileName); //用image1显示图片
.............
应该就没问题了
OPenpictureDialog这个组件它自带过滤功能
所以只要改成这样就可以了
procedure TFdazx.I1Click(Sender: TObject);
var ImageFileName,ImageFilePath:string;
begin
if OpenPictureDialog1.Execute then
begin
ImageFileName:=OpenPictureDialog1.FileName; //图片的文件名
ImageFilePath:=Extractfilepath(ImageFileName); //图片的路径
Image1.Picture.LoadFromFile(ImageFilePath); //用image1显示图片
end;
end;
可以用流来实现。
给个已经调试好的代码给你,希望对你有帮助。////////////////////////////////////////////
unit FrmMain;interfaceuses//这里要引用Jpeg单元,以便打开jpg图片文件;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, Jpeg;type
TFormMain = class(TForm)
MainMenu: TMainMenu;
N1: TMenuItem;
NOpenPicture: TMenuItem;
OpenDlg: TOpenDialog;
Image: TImage;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure NOpenPictureClick(Sender: TObject);
private
//这是用于打开jpg和bmp文件的变量;
fJpg:TJpegImage;
fBmp:TBitmap;
public
{ Public declarations }
end;var
FormMain: TFormMain;implementation{$R *.dfm}//在窗体创建时初始化变量;
procedure TFormMain.FormCreate(Sender: TObject);
begin
fJpg:=TJpegImage.Create;
fBmp:=TBitmap.Create;
end;//窗体关闭时释放变量;
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
fJpg.Free;
fBmp.Free;
end;//这是一个菜单项的事件;
//在该事件中打开图片文件;
procedure TFormMain.NOpenPictureClick(Sender: TObject);
begin
if(OpenDlg.Execute=true)then//用户选择了图片才载入;
begin
if(ExtractFileExt(OpenDlg.FileName)='.bmp')then//如果是bmp文件,则用TBitmap打开;
begin
fBmp.LoadFromFile(OpenDlg.FileName);
Image.Picture.Assign(fBmp);
{
也可以用以下代码来代替以上两句代码,还更省事,这样连fBmp变量都可以省去了。
TBitmap的代码只是作为一种方法列举出来而已。
Image.Picture.LoadFromFile(OpenDlg.FileName);
}
end
else if(ExtractFileExt(OpenDlg.FileName)='.jpg')then//如果是jpg文件,则用TJepeImage打开;
begin
fJpg.LoadFromFile(OpenDlg.FileName);
Image.Picture.Assign(fJpg);
end;
//如果还需要打开其他类型的文件,只有添加合适的变量,然后在这里添加打开图片文件的代码就可以了。
end;
end;{
附注:
1、OpenDlg的过滤器在设计阶段设为:Pictures(*.jpg,*.bmp)|*.jpg;*.bmp|JpgFIles(*.jpg)|*.jpg|BmpFiles(*.bmp)|*.bmp
}end.