我又不是很笨,专注地去做一件事,总有一天会成功!一个月不够、一年、一年不够十年、十年不够、一辈子、一辈子不够...无撼!因为有的人一辈子没做好过一件事!
查看文章 |
Delphi关于TJPEGImage的使用
2008-07-09 23:25
虽然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字段中.由于既没有源代码也没有帮助,大家只能从字面 上猜猜看了. |
最近读者: