第一个问题:Delphi中的TImage控件直接支持Bitmap格式(.bmp)、 Icon格式(.ico)和Metafile格式(.emf or .wmf)的图像文件。在Delphi的设计窗口中可以把这三种格式的文件赋给TImage控件的Picture属性。TImage控件还能显示其他格式的图像,如JPEG格式的图像。但不能直接把文件名赋值给Picture属性,而需要把图像对象赋值给属性Picture的Graphic属性。Delphi 3.0 提供了TJPEGImage类来支持JPEG图像,调用TJPEGImage的方法LoadFromFile可以从文件中装载JPEG图像。因此显示JPEG格式的图像,实现起来相对容易一些。以下是一个测试程序的制作过程:  1.建立一个新的应用程序,窗体(Form)的名字为Form1,对应的单元名为Unit1。  2.在窗体中放置一个TImage控件,名字为Image1,将其AutoSize属性设为True。  3.在窗体中放入一个按钮(即TButton控件),取名为Button1,把其属性Caption改为“装载图像”,在Button1的OnClick事件中,加入代码后如下:  procedure TForm1.Button1Click(Sender: TObject);  var JPEGImage:TJPEGImage;  begin   JPEGImage:=TJPEGImage.Create;  //创建JPEG图像对象   try  JPEGImage.LoadFromFile(′F:\forest.jpg′);   //从文件F:\forest.jpg中装载图像,   //视实际情况改变此处的文件名  Image1.Picture.Graphic:=JPEGImage;  //赋值,使Image1显示JPEG图像   finally  JPEGImage.Free; //释放对象   end;  end;  4. 类TJPEGImage定义在单元jpeg.pas中,因此必须在本单元(即单元Unit1)的uses 子句中包括单元jpeg。  5.运行本程序,进行测试。

解决方案 »

  1.   

    第三个问题
    一、图像数据的保存  1.创建一个含有Graphic字段的数据库列表。  在WindowsISQ(或Databasedesktop)下createdatab
    asemydb.gdb  createtablemyfrieds  (namevarchar(15)notnull,telephonevarchar(
    12),addressvarchar(30),zipvarchar(8),pictu
    revarchar(15),imageblob);  其中,picture字段用于保存图像的名称(包括路径
    ),image(Graphic字符)则用于存储图像,其数据类型
    为“blob”。  2.建立窗体(如图1所示),设置窗体中各控件的属
    性。
      该窗体的主要功能是将某人信息进行编辑和保存。需
    要注意的图像保存所用的图像框必须用TImage而不能用TD
    BImage,编辑框宜用Tedit而不宜用TDBEdit,这一点与
    图像的读取恰好相反。  其中,各主要控件的属性设置如下:  Datasource1.Dataset:Κtable1;  Table1.Databasename:Κmydb.gdb;  Table1.Tablename:Κmyfriends;  Table1.active:Κtrue;  其他诸如Caption之类的属性设置不再叙述。  3.数据处理程序的建立。  (1)图像( .bmp文件)打开的处理。  procedureTForm1.pictopenbtnClick(Sender:TOb
    ject);  beginopendialog1.execute;  image1.picture.loadfromfile  (opendialog1.filename);  end;  (2)图像保存的处理。  图像保存的处理程序完成把在窗体1所编辑的信息包
    括图像保存到相应的数据库中,其关键是要定义一个Graph
    ic类型的变量且该变量要用assing()函数传递到相应数
    据库中保存。具体程序如下:  procedureTform1.Savebtnclick(sender:TObject
    );  vargraphic1:TGraphic;  begingraphic1:ΚTGraphic.Create;  graphic1.loadfromfile(opendialog1.filename
    );  table1.insert;  table1.fieldbyname(′name′).asstring:Κe
    dit1.text;  table1.fieldbyname(′telephon′).asstring
    :Κedit2.text;  table1.fieldbyname(′address′).asfloat:
    Κ(edit3.text);  table1.fieldbyname(′zip′).asfloat:Κ(e
    dit4.text);  table1.fields[4].assign(graphic1);  table1.post;  graphic1.free;  end;