资源说明:delphi 7 gif控件
unit GIFImage;
////////////////////////////////////////////////////////////////////////////////
// //
// Project: GIF Graphics Object //
// Module: gifimage //
// Description: TGraphic implementation of the GIF89a graphics format //
// Version: 2.2 //
// Release: 5 //
// Date: 23-MAY-1999 //
// Target: Win32, Delphi 2, 3, 4 & 5, C++ Builder 3 & 4 //
// Author(s): anme: Anders Melander, anders@melander.dk //
// fila: Filip Larsen //
// rps: Reinier Sterkenburg //
// Copyright: (c) 1997-99 Anders Melander. //
// All rights reserved. //
// Formatting: 2 space indent, 8 space tabs, 80 columns. //
// //
////////////////////////////////////////////////////////////////////////////////
// Changed 2001.07.23 by Finn Tolderlund: //
// Changed according to e-mail from "Rolf Frei" //
// on 2001.07.23 so that it works in Delphi 6. //
// //
// Changed 2002.07.07 by Finn Tolderlund: //
// Incorporated additional modifications by Alexey Barkovoy (clootie@reactor.ru)
// found in his Delphi 6 GifImage.pas (from 22-Dec-2001). //
// Alexey Barkovoy's Delphi 6 gifimage.pas can be downloaded from //
// http://clootie.narod.ru/delphi/download_vcl.html //
// These changes made showing of animated gif files more stable. The code //
// from 2001.07.23 could crash sometimes with an Execption EAccessViolation. //
// //
// Changed 2002.10.06 by Finn Tolderlund: //
// Delphi 7 compatible. //
// //
// Changed 2003-03-06 by Finn Tolderlund: //
// Changes made as a result of postings in borland.public.delphi.graphics //
// from 2003-02-28 to 2003-03-05 where white (255,255,255) in a bitmap //
// was converted to (254,254,254) in the gif. //
// The doCreateOptimizedPaletteFromSingleBitmap function and //
// the CreateOptimizedPaletteFromManyBitmaps function is changed so that //
// the correct offset 246 is used instead of 245. //
// The ReduceColors function is changed according to Anders Melander's post //
// so that a colour get converted to the precise colour if that colour is //
// present in the palette when using ColorReduction rmQuantize. //
// //
// Changed 2003-03-09 by Finn Tolderlund: //
// Delphi 7 version is now assumed if unknown compiler version is unknown //
// for better compatibility with future Delphi versions. //
// Hopefully this code is now compatible with future Delphi versions, //
// unless Borland makes some changes that breaks existing code. //
// //
// Changed 2003-08-04 by Finn Tolderlund: //
// Changed procedure AddMaskOnly so that it doesn't leak a GDI HBitmap-object //
// and it doesn't release the handle of the source bitmap which //
// is used to assign to the GIF object as in gif.assign(bm); //
// These changes were made as a result of a news post made by Renate Schaaf //
// with the subject "TGifImage HBitmap leak on assign?" //
// in borland.public.delphi.graphics on Mon 28 Jul 2003 and Sun 03 Aug 2003. //
// //
// Changed 2004.03.09 by Finn Tolderlund: //
// Added a ForceFrame property to the TGIFImage class. //
// The ForceFrame property can be used to make TGIFImage display a apecific //
// sub frame from an animated gif. //
// How to use: Set the Animate property to False and set the ForceFrame //
// property to a desired frame number (0-N) //
// Normal display: Set the ForceFrame property to -1 and set Animate to True. //
// If ForceFrame is negative TGIFImage behaves just as before this change. //
// Note that if the sub frame in the gif only contains part of the image //
// (i.e. only the changes from previous frames) the result is unpredictable. //
// The result is best if each sub frame contains a whole image. //
// If the sub frame is transparent the background is not automatically //
// restored, you must do so yourself if you want that. //
// If you are using a TImage to display the gif you can use //
// Image.Parent.Invalidate or Image.Parent.Refresh to restore the background. //
// This change was made as a result of a email correspondance with //
// Tineke Kosmis (http://www.classe.nl/) which requested such a property. //
// //
////////////////////////////////////////////////////////////////////////////////
// //
// Please read the "Conditions of use" in the release notes. //
// //
////////////////////////////////////////////////////////////////////////////////
// Known problems:
//
// * The combination of buffered, tiled and transparent draw will display the
// background incorrectly (scaled).
// If this is a problem for you, use non-buffered (goDirectDraw) drawing
// instead.
//
// * The combination of non-buffered, transparent and stretched draw is
// sometimes distorted with a pattern effect when the image is displayed
// smaller than the real size (shrinked).
//
// * Buffered display flickers when TGIFImage is used by a transparent TImage
// component.
// This is a problem with TImage caused by the fact that TImage was designed
// with static images in mind. Not much I can do about it.
//
////////////////////////////////////////////////////////////////////////////////
// To do (in rough order of priority):
// { TODO -oanme -cFeature : TImage hook for destroy notification. }
// { TODO -oanme -cFeature : TBitmap pool to limit resource consumption on Win95/98. }
// { TODO -oanme -cImprovement : Make BitsPerPixel property writable. }
// { TODO -oanme -cFeature : Visual GIF component. }
// { TODO -oanme -cImprovement : Easier method to determine DrawPainter status. }
// { TODO -oanme -cFeature : Import to 256+ color GIF. }
// { TODO -oanme -cFeature : Make some of TGIFImage's properties persistent (DrawOptions etc). }
// { TODO -oanme -cFeature : Add TGIFImage.Persistent property. Should save published properties in application extension when this options is set. }
// { TODO -oanme -cBugFix : Solution for background buffering in scrollbox. }
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。