主页 > 编程资料 > Delphi >
发布时间:2015-09-22 作者:网络 阅读:202次

 虽然BCB的较高版本包含了TJPEGImage构件,但是它的相关信息没有做到家:
一是没有源代码,二是例子不多;帮助文件里面也没有关于protected属性和方法
的详细信息.这里把TJPEGImage的主要用法介绍一下,大家用的时候就方便一点.
 
一点概述:
 
  TJPEGImage同TBitmap一样,是TGraphics的子类,不是可视构件(我觉得名字
里面带个Image有误导作用).TJPEGImage内建了一个Bitmap(protected),能够完
成Bitmap和JPEG的转换.这个Bitmap和JPEG本身的实例(private)都是不可访问
的,不过通过public属性和方法已经可以搞定一般操作了.
 
 
DIBNeeded()和JPEGNeeded():
 
  这两个方法用来从JPEG或Bitmap之一的实例生成另一个的实例.TJPEGImage
类不维护内部两个实例的统一性,必要时用户可以使用这两个方法.JPEGNeeded
用得不多,SaveToFile方法会自动调用它.后面将会看到DIBNeeded是怎么用的.
 
 
 
显示图片:
 
  这是最简单的操作.注意到TJPEGImage是TGraphics的子类,可以毫不客气的
这样写:
JPEGImage1->LoadFromFile(...,',','); //例子,不一定这样写,下同
Image1->Picture->Graphic=JPEGImage1;
这就OK了.
 
 
Bitmap转换成JPEG:
 
  我就看到这一个是给了例子的:
Bitmap1->LoadFromFile(...,',',');
JPEGImage1->Assign(Bitmap1,',',');
注意这时并没有生成真正的JPEG,而只是把Bitmap1的内容复制给JPEGImage1内部
的Bitmap实例.但是用户通常可以直接使用它,包括把它Assign给其他的Bitmap或
JPEGImage,以及通过TImage显示它.存为文件的时候TJPEGImage::SaveToFile方法
会自动调用JPEGNeeded()生成(如果不存在)JPEG并保存.
 
 
JPEG转换成Bitmap:
 

  上面可以把Bitmap1直接Assign给JPEGImage1是因为JPEGImage具有Bitmap和
JPEG的双重身份.反过来就不行了,这时候必须显式的生成Bitmap实例,然后才能
Assign:
JPEGImage1->LoadFromFile(...,',',');
JPEGImage1->DIBNeeded(,',',');
Bitmap1->Assign(JPEGImage1,',',');
 
 
一点补充:
 
  关于其他的发表属性和公开方法的用法帮助已经很清楚了.TJPEGImage的更
多用法隐藏在protected字段中.由于既没有源代码也没有帮助,大家只能从字面
上猜猜看了


例子:

先在在uses中加入jipeg单元

procedure TForm1.Button1Click(Sender: TObject,',',');
var
myjpeg:Tjpegimage;
mybmp:Tbitmap;
begin
myjpeg:=Tjpegimage.create;
myjpeg.loadfromfile('C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\1.jpg',',',');
mybmp:=Tbitmap.create;
mybmp.assign(myjpeg,',',');
image1.picture.bitmap:=mybmp;
mybmp.SaveToFile('C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\1.bmp',',',');
myjpeg.Free;
mybmp.Free;
end;

关键字词: