属性 |
类型 |
描述 |
public: |
|
|
GlobalColorMap |
TGIFColorMap * |
gif 图片全局调色板【例1:显示 gif 全局调色板的内容】 |
Version |
TGIFVersion |
gif 的版本,只读,可用的值为:
• gvUnknown:未知版本。在未加载任何文件,也没有图像数据的时候,是未知版本
• gv87a: 文件/图像数据的版本为 GIF87a
• gv89a: 文件/图像数据的版本为 GIF89a |
Images |
TGIFImageList * |
gif 每一帧的数据【例:gif 的每一帧提取出来,每一帧存为一个 bmp 图片】 |
ColorResolution |
int |
颜色分辨率,只读属性,ColorResolution + 1 为颜色分辨率二进位位数,
修改 GlobalColorMap 属性里面的颜色个数,ColorResolution 会随着改变。
• 例1:如果 ColorResolution = 4,那么为 5 位的颜色分辨率,2⁵ = 32,那么这个 gif 图片最多有 32 种颜色。
• 例2:修改 GlobalColorMap 让里面有 100 个颜色,100 转为二进制需要至少 7 位二进制位来表达,那么 ColorResolution 会变成 6。
【例1:显示 gif 全局调色板的内容】 |
BitsPerPixel |
int |
每个像素的最大二进位位数,只读属性,一般情况,会等于 ColorResolution + 1
这个属性的值会自动根据调色板里面颜色个数来调整。 |
BackgroundColorIndex |
Byte |
gif 图片的背景色在调色板里面的索引号 |
BackgroundColor |
TColor |
gif 图片的背景色的颜色值 |
AspectRatio |
Byte |
这个 gif 图片的宽高比。
=0: 宽高比为 1:1
≠0: 宽高比为 (AspectRatio + 15) / 64.0,范围在 1:4 到 4:1 之间
例如 1 对应于 1:4 (0.25); 241 对应于 4:1 (4.0) |
IsTransparent |
bool |
这个 gif 图片是否存在透明部分,只读属性 |
DrawBackgroundColor |
TColor |
显示这个 gif 图片的窗口的背景颜色 |
ColorReduction |
TColorReduction |
从其他图片格式导入 gif 图片的时候,如何处理颜色消减,可读写,可用的值:
• rmNone: 不处理颜色消减
• rmWindows20: 使用 Windows 操作系统的 20 色系统调色板
• rmWindows256: 使用 Windows 操作系统的 256 色半色调调色板。
• rmWindowsGray: 使用 Windows 操作系统的 4 个灰度颜色。
• rmMonochrome: 使用只有黑白两种颜色的调色板。
• rmGrayScale: 使用 256 级灰度调色板。
• rmNetscape: 使用 Netscape 216 种颜色的调色板。
• rmQuantize: 使用最佳化的 2ⁿ 种颜色的调色板。
• rmQuantizeWindows: 使用最佳化的 256 种颜色的 Windows 调色板。
• rmPalette: 使用自定义的调色板。 |
ReductionBits |
int |
当 ColorReduction 属性为 rmQuantize 的时候,这个属性表示每个像素的二进位位数,可读写属性。 |
DitherMode |
TDitherMode |
抖动算法 (数字半色调算法),可读写属性。可用的值为:
• dmNearest: 使用接近的颜色替代;
• dmFloydSteinberg: 使用 Floyd-Steinberg error diffusion 抖动算法;
• dmStucki: 使用 Stucki error diffusion 抖动算法;
• dmSierra: 使用 Sierra error diffusion 抖动算法;
• dmJaJuNI: 使用 Jarvis, Judice, and Ninke error diffusion 抖动算法;
• dmSteveArche: 使用 Stevenson and Arche error diffusion 抖动算法;
• dmBurkes: 使用 Burkes error diffusion 抖动算法。 |
AnimationSpeed |
int |
显示动画的速度,可读写,0 ~ 1000,单位:%
100 为正常速度 (100%),数值越大,速度越快【例:显示 gif 图片和动画】 |
Animate |
bool |
是否显示动画,可读写【例:显示 gif 图片和动画】 |
AnimateLoop |
TGIFAnimationLoop |
gif 动画每一帧循环显示的方式,可读写,可用的值为:
• glDisabled: 不循环显示
• glEnabled: 按照图片内部存储的循环方式
• glContinously: 循环显示,忽略图片内部存储的循环方式 |
Dithering |
TGIFDithering |
显示 gif 的时候是否使用抖动算法 (数字半色调算法),可读写属性。可用的值为:
• gdDisabled: 使用 Netscape 216 种颜色调色板的时候不采用抖动算法;
• gdEnabled: 使用 Netscape 216 种颜色调色板的时候采用抖动算法;
• gdAuto: 使用 Netscape 216 种颜色调色板的时候,只有在 DC (device context) 支持的颜色少于 256 种颜色的时候使用抖动算法。 |
ShouldDither |
bool |
显示 gif 的时候需要使用抖动算法 (数字半色调算法),只读属性。 |
Bitmap |
TBitmap |
gif 里面的第一帧图像,相当于 Images->Frames[0] 里面的图像数据。 |
TGraphic:: |
|
从 TGraphic 继承过来的 |
Empty |
bool |
是否包含图像数据,只读。如果不包含图像数据,此属性为 true. |
Height |
int |
图像的高度,可读写,单位:像素 (pixels)
可以用 SetSize 方法同时修改宽度和高度 |
Modified |
bool |
图像是否被修改过。如果被修改过,此属性为 true. |
Palette |
HPALETTE |
调色板句柄,可读写。如果图片没有或者不需要调色板,此值为 NULL |
PaletteModified |
bool |
调色板是否被修改过,如果被修改过,此属性值为 true. |
Transparent |
bool |
图像是否存在透明部分,可读写。 |
Width |
int |
图像的宽度,可读写,单位:像素 (pixels)
可以用 SetSize 方法同时修改宽度和高度 |
SupportsPartialTransparency |
bool |
是否支持半透明或 Alpha 通道,只读属性。 |
方法 |
描述 |
public: |
|
TGIFImage |
__fastcall virtual TGIFImage(void);
构造函数。 |
~TGIFImage |
__fastcall virtual ~TGIFImage(void);
析构函数。 |
Dormant |
void __fastcall Dormant(void);
C++ Builder 的帮助里面 Dormant 没有写任何内容,在 TGIFImage 的源码里面看到 Dormant 函数的内容为:FreeBitmap; FreeMask; FreePalette; 即:释放位图、蒙板和调色板占用的资源。 |
LoadFromStream |
virtual void __fastcall LoadFromStream(System::Classes::TStream* Stream);
从流加载 gif 图片/动画。 |
SaveToStream |
virtual void __fastcall SaveToStream(System::Classes::TStream* Stream);
保存当前的 gif 数据到流。 |
Add |
TGIFFrame* __fastcall Add(System::Classes::TPersistent* Source);
把 Source 的内容添加到当前的 gif 数据。如果 Source 是 TGIFImage 会添加 Source 里面所有的帧到当前数据,如果是 TBitmap, TIcon, TJPEGImage, TPngImage 等其他从 TGraphic 继承的类,会添加一帧图像数据。 |
Pack |
void __fastcall Pack(void);
清空 gif 所有的图像数据和调色板数据。 |
OptimizeColorMap |
void __fastcall OptimizeColorMap(void);
优化调色板数据。 |
Optimize |
void __fastcall Optimize(TGIFOptimizeOptions Options, TColorReduction ColorReduction = (TColorReduction)(0x0), TDitherMode DitherMode = (TDitherMode)(0x0), int ReductionBits = 0x8);
优化图像数据。
Options: 可以包含下面的一项或多项内容:
• ooCrop: 裁剪动画帧
• ooMerge: 合并相同颜色的像素
• ooCleanup: 移除注释和应用扩展
• ooColorMap: 调色板颜色排序,移除没有用到的项目
ColorReduction: 颜色消减,可以使用的值:
• rmNone: 不处理颜色消减
• rmWindows20: 使用 Windows 操作系统的 20 色系统调色板
• rmWindows256: 使用 Windows 操作系统的 256 色半色调调色板。
• rmWindowsGray: 使用 Windows 操作系统的 4 个灰度颜色。
• rmMonochrome: 使用只有黑白两种颜色的调色板。
• rmGrayScale: 使用 256 级灰度调色板。
• rmNetscape: 使用 Netscape 216 种颜色的调色板。
• rmQuantize: 使用最佳化的 2ⁿ 种颜色的调色板。
• rmQuantizeWindows: 使用最佳化的 256 种颜色的 Windows 调色板。
• rmPalette: 使用自定义的调色板。
DitherMode: 抖动算法 (数字半色调算法)
• dmNearest: 使用接近的颜色替代;
• dmFloydSteinberg: 使用 Floyd-Steinberg error diffusion 抖动算法;
• dmStucki: 使用 Stucki error diffusion 抖动算法;
• dmSierra: 使用 Sierra error diffusion 抖动算法;
• dmJaJuNI: 使用 Jarvis, Judice, and Ninke error diffusion 抖动算法;
• dmSteveArche: 使用 Stevenson and Arche error diffusion 抖动算法;
• dmBurkes: 使用 Burkes error diffusion 抖动算法。
ReductionBits: ColorReduction 为 rmQuantize 的时候,每个像素的二进位位数 |
Clear |
void __fastcall Clear(void);
清空 gif 所有的图像数据。 |
Warning |
virtual void __fastcall Warning(System::TObject* Sender, TGIFSeverity Severity, const System::UnicodeString Msg);
触发一个 OnWarning 事件。
Severity 可以使用的值:
• gsInfo: 这只是一个提示信息,不触发异常。
• gsWarning: 这是一个警告 (不严重的问题),不触发异常。
• gsError: 这是一个错误 (严重的问题),会触发抛出 GIFException 异常。 |
Assign |
virtual void __fastcall Assign(System::Classes::TPersistent *Source);
把 Source 图像内容复制到当前的 gif,如果 Source 不是 TGIFImage,而是 TBitmap, TIcon, TJPEGImage, TPngImage 等其他从 TGraphic 继承的类,会把数据复制到 gif 的第一帧图像数据。 |
LoadFromClipboardFormat |
virtual void __fastcall LoadFromClipboardFormat(System::Word AFormat, NativeUInt AData, HPALETTE APalette);
从剪贴板加载图像数据,AFormat 为剪贴板数据格式,例如 CF_BITMAP,AData 为图像数据,APalette 为调色板句柄。【请参考 TBitmap 的例子:从剪贴板加载位图】 |
SaveToClipboardFormat |
virtual void __fastcall SaveToClipboardFormat(System::Word &AFormat, NativeUInt &AData, HPALETTE &APalette);
把当前的图像数据转为剪贴板格式的数据,可以把这些数据放入剪贴板。
【请参考 TBitmap 的例子:把位图放在剪贴板里面】 |
EffectiveBackgroundColor |
System::Uitypes::TColor __fastcall EffectiveBackgroundColor(void);
返回显示这个 gif 的窗口的背景颜色。 |
StopDraw |
void __fastcall StopDraw(void);
停止显示输出。如果这个 gif 是一个动画,会停止播放。 |
SuspendDraw |
void __fastcall SuspendDraw(void);
暂停显示输出。如果这个 gif 是一个动画,会暂停播放。 |
ResumeDraw |
void __fastcall ResumeDraw(void);
继续显示输出。如果这个 gif 是一个动画,会继续播放。 |
Equals |
inline bool __fastcall Equals(System::TObject* Obj){ return Vcl::Graphics::TGraphic::Equals(Obj); }
比较当前图像是否和 Obj 的图像数据相同。 |
TGraphic:: |
从 TGraphic 继承过来的 |
LoadFromFile |
virtual void __fastcall LoadFromFile(const System::UnicodeString Filename);
从文件加载图像。 |
SaveToFile |
virtual void __fastcall SaveToFile(const System::UnicodeString Filename);
把当前图像储存为文件。 |
SetSize |
virtual void __fastcall SetSize(int AWidth, int AHeight);
修改图像的大小为:宽度 = AWidth,高度 = AHeight,单位为像素 (pixels) |
operator
_di_IStreamPersist() |
operator System::Classes::_di_IStreamPersist()
{
System::Classes::_di_IStreamPersist intf;
this->GetInterface(intf);
return intf;
}
类型转换操作符,转为 _di_IStreamPersist 类型。 |
protected: |
|
GetHeight |
virtual int __fastcall GetHeight(void);
返回图像的高度,单位:像素 (pixels)。 |
SetHeight |
virtual void __fastcall SetHeight(int Value);
把图像高度修改为 Value,单位:像素 (pixels) |
GetWidth |
virtual int __fastcall GetWidth(void);
返回图像的宽度,单位:像素 (pixels)。 |
SetWidth |
virtual void __fastcall SetWidth(int Value);
把图像宽度修改为 Value,单位:像素 (pixels) |
AssignTo |
virtual void __fastcall AssignTo(System::Classes::TPersistent* Dest); |
Draw |
virtual void __fastcall Draw(Vcl::Graphics::TCanvas* ACanvas, const System::Types::TRect &Rect);
把当前图像数据显示到画布 ACanvas 的 Rect 位置。 |
Equals |
virtual bool __fastcall Equals(Vcl::Graphics::TGraphic* Graphic)/* overload */;
比较当前图像是否和 Obj 的图像数据相同。 |
GetPalette |
virtual HPALETTE __fastcall GetPalette(void);
返回调色板句柄。 |
SetPalette |
virtual void __fastcall SetPalette(HPALETTE Value);
调色板改为使用 Value 句柄的调色板。 |
GetEmpty |
virtual bool __fastcall GetEmpty(void);
返回图像数据是否为空。 |
WriteData |
virtual void __fastcall WriteData(System::Classes::TStream* Stream);
把图像数据写到 Stream 里面 |
GetIsTransparent |
bool __fastcall GetIsTransparent(void);
为 IsTransparent 属性调用的函数,获取 gif 图片是否存在透明部分。 |
GetVersion |
TGIFVersion __fastcall GetVersion(void);
为 Version 属性调用的函数,返回 gif 图片的版本:
• gvUnknown:未知版本。在未加载任何文件,也没有图像数据的时候,是未知版本
• gv87a: 文件/图像数据的版本为 GIF87a
• gv89a: 文件/图像数据的版本为 GIF89a |
GetColorResolution |
int __fastcall GetColorResolution(void);
为 ColorResolution 属性调用的函数,返回颜色分辨率,详见 ColorResolution 属性。 |
GetBitsPerPixel |
int __fastcall GetBitsPerPixel(void);
为 BitsPerPixel 属性调用的函数,返回每个像素的最大二进位位数,详见 BitsPerPixel 属性。 |
GetBackgroundColorIndex |
System::Byte __fastcall GetBackgroundColorIndex(void);
为 BackgroundColorIndex 属性调用的函数,返回 gif 图片的背景色在调色板里面的索引号。 |
SetBackgroundColorIndex |
void __fastcall SetBackgroundColorIndex(const System::Byte Value);
为 BackgroundColorIndex 属性调用的函数,把 gif 图片的背景色在调色板里面的索引号改为 Value。 |
GetBackgroundColor |
System::Uitypes::TColor __fastcall GetBackgroundColor(void);
为 BackgroundColor 属性调用的函数,返回 gif 图片的背景色的颜色值。 |
SetBackgroundColor |
void __fastcall SetBackgroundColor(const System::Uitypes::TColor Value);
为 BackgroundColor 属性调用的函数,把 gif 图片的背景色的颜色值改为 Value。 |
GetAspectRatio |
System::Byte __fastcall GetAspectRatio(void);
为 AspectRatio 属性调用的函数,返回图片的宽高比,详见 AspectRatio 属性。 |
SetAspectRatio |
void __fastcall SetAspectRatio(const System::Byte Value);
为 AspectRatio 属性调用的函数,把图片的宽高比改为 Value,详见 AspectRatio 属性。 |
SetAnimationSpeed |
void __fastcall SetAnimationSpeed(int Value);
为 AnimationSpeed 属性调用的函数,返回显示动画的速度,详见 AnimationSpeed 属性。 |
SetReductionBits |
void __fastcall SetReductionBits(int Value);
为 ReductionBits 属性调用的函数,详见 ReductionBits 属性。 |
NewImage |
void __fastcall NewImage(void);
TGIFImage 内部调用的方法,为 InternalClear 方法调用。 |
GetBitmap |
Vcl::Graphics::TBitmap* __fastcall GetBitmap(void);
为 Bitmap 属性调用,返回 gif 的第一帧图像详见 Bitmap 属性。 |
NewBitmap |
Vcl::Graphics::TBitmap* __fastcall NewBitmap(void);
创建一个新的空白位图,为 TGIFImage 内部调用的函数。 |
FreePalette |
void __fastcall FreePalette(void);
释放调色板占用的资源。 |
FreeBitmap |
void __fastcall FreeBitmap(void);
释放 TGIFImage 内部储存的位图资源。 |
GetColorMap |
TGIFColorMap* __fastcall GetColorMap(void);
返回当前 gif 图像的调色板。 |
GetDoDither |
bool __fastcall GetDoDither(void);
为 ShouldDither 属性调用的方法,返回显示 gif 的时候需要使用抖动算法 (数字半色调算法)。 |
InternalClear |
void __fastcall InternalClear(void);
复位 TGIFImage 实例的数据,是 TGIFImage 内部调用的函数。 |
SetAnimate |
void __fastcall SetAnimate(const bool Value);
为 Animate 属性调用的方法,把是否显示动画改为 Value,详见 Animate 属性。 |
SetAnimateLoop |
void __fastcall SetAnimateLoop(const TGIFAnimationLoop Value);
为 AnimateLoop 属性调用的方法,把循环显示的方式 改为 Value,详见 AnimateLoop 属性。 |
SetDithering |
void __fastcall SetDithering(const TGIFDithering Value);
为 Dithering 属性调用的方法,把是否使用抖动算法改为 Value,详见 Dithering 属性。 |
SetTransparent |
virtual void __fastcall SetTransparent(bool Value);
设为是否需要把图像显示为透明。 |
CreateRenderer |
virtual TCustomGIFRenderer* __fastcall CreateRenderer(void); |
TGraphic:: |
从 TGraphic 继承过来的 |
Changed |
virtual void __fastcall Changed(System::TObject* Sender);
当图像数据被修改的时候,会自动调用 Changed 方法。
Changed 方法会把 Modified 属性置为 true,并且触发 OnChange 事件。 |
DefineProperties |
virtual void __fastcall DefineProperties(System::Classes::TFiler* Filer);
重载 TPersistent 的 DefineProperties,用于 ReadData 和 WriteData 方法读写流图像数据。 |
DrawTransparent |
virtual void __fastcall DrawTransparent(TCanvas* ACanvas, const System::Types::TRect &Rect, System::Byte Opacity);
把当前图像数据显示到画布 ACanvas 的 Rect 位置,和画布 Rect 位置原来的显示内容混合在一起,Opacity 为混合的比例,用来实现图像的透明效果,即 Opacity 为图像不透明的程度。 |
GetTransparent |
virtual bool __fastcall GetTransparent(void);
返回图像是否存在透明部分。 |
Progress |
DYNAMIC void __fastcall Progress(System::TObject* Sender, TProgressStage Stage, System::Byte PercentDone, bool RedrawNow, const System::Types::TRect &R, const System::UnicodeString Msg);
当图像改变时 (加载、存储、转换的过程中),会调用这个方法来触发 OnProgress 事件。 |
ReadData |
virtual void __fastcall ReadData(System::Classes::TStream* Stream);
从 Stream 里面读取图像数据。 |
GetSupportsPartialTransparency |
virtual bool __fastcall GetSupportsPartialTransparency(void);
返回是否支持半透明或 Alpha 通道。 |