RAD Studio VCL Reference
|
Frees the cached file image stored in memory by the bitmap.
procedure FreeImage;
__fastcall FreeImage();
Use FreeImage to reduce the memory requirements of an application when color depth and pixel format are not an issue. Freeing the image releases the memory allocated for the bitmap image when it was originally loaded to disk. Consequently, some of the original pixel format of the bitmap is lost (for example, if you changed its format to a DIB) as well as the color depth of the bitmap.
When a bitmap is loaded into a bitmap object, the bitmap object creates an image of the loaded bitmap in memory. If the bitmap isn't changed, the memory image is used when saving the bitmap, to verify that the bitmap has not lost color depth or changed the pixel format.
C++ Examples:
/* This example uses a button on a form and creates two bitmaps dynamically. One bitmap is monchrome, which means all non-white colors become black. The bitmap file path is relative to the Debug directory. Note: For the C++ Builder, capitalization matters for the file name and path. */ #include <memory> //for STL auto_ptr class void __fastcall TForm1::Button1Click(TObject *Sender) { std::auto_ptr<Graphics::TBitmap> Bitmap1(new Graphics::TBitmap()); std::auto_ptr<Graphics::TBitmap> Bitmap2(new Graphics::TBitmap()); try { Bitmap1->LoadFromFile("..\\FACTORY.BMP"); Bitmap2->Assign(Bitmap1.get()); // Copy Bitmap1 into Bitmap2 Bitmap2->Dormant(); // Free up GDI resources Bitmap2->FreeImage(); // Free up Memory. Canvas->Draw(20, 20, Bitmap2.get()); // Note that previous calls don't lose the image Bitmap2->Monochrome = true; Canvas->Draw(80, 80, Bitmap2.get()); Bitmap2->ReleaseHandle(); // This will actually lose the bitmap; } catch (...) { MessageBeep(0); } }
Delphi Examples:
{ This example uses a button on a form and creates two bitmaps dynamically. One bitmap is monchrome, which means all non-white colors become black. The bitmap file path is relative to the Debug directory. } procedure TForm1.Button1Click(Sender: TObject); var BitMap1,BitMap2 : TBitMap; MyFormat : Word; begin BitMap2 := TBitMap.Create; BitMap1 := TBitMap.Create; try BitMap1.LoadFromFile('factory.bmp'); BitMap2.Assign(BitMap1); // Copy BitMap1 into BitMap2 BitMap2.Dormant; // Free up GDI resources BitMap2.FreeImage; // Free up Memory. Canvas.Draw(20,20,BitMap2); // Note that previous calls don't lose the image BitMap2.Monochrome := true; Canvas.Draw(80,80,BitMap2); BitMap2.ReleaseHandle; // This will actually lose the bitmap; finally BitMap1.Free; BitMap2.Free; end; end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|