RAD Studio VCL Reference
|
Indicates the color palette of the graphical image.
property Palette: HPALETTE;
__property HPALETTE Palette;
Use Palette to get the color palette of a graphical image. If the graphic does not need or does not use a palette, the Palette property is zero.
C++ Examples:
/* The GetFormImage allows you to easily obtain a bitmap of a form. The following method can be added to a custom TWinControl descendant to save itself as a bitmap. Check the produced BMP file to confirm. Click the button and them double click on the newly created foo.bmp file to view. */ #include <memory> //for STL auto_ptr class class TMyControl : public TColorListBox { __published: // IDE-managed Components void __fastcall SaveAsBmp(TFileName fileName); private: // User declarations public: // User declarations __fastcall TMyControl(TComponent* Owner); }; TForm1 *Form1; TMyControl *MyControl1; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } __fastcall TMyControl::TMyControl(TComponent* Owner) : TColorListBox(Owner) { } typedef struct { TLogPalette lpal; TPaletteEntry dummy[256]; } LogPal; void __fastcall TMyControl::SaveAsBmp(TFileName fileName) { std::auto_ptr<TCanvas> tempCanvas(new TCanvas); HWND notUsed; tempCanvas->Handle = GetDeviceContext(notUsed); std::auto_ptr<TImage> image2save(new TImage(Form1)); // The owner will clean this up. image2save->Height = Height; image2save->Width = Width; TRect destRect = Rect(0,0,Width,Height); TRect sourceRect = destRect; image2save->Canvas->CopyRect(destRect, tempCanvas.get(), sourceRect); LogPal SysPal; SysPal.lpal.palVersion = 0x300; SysPal.lpal.palNumEntries = 256; GetSystemPaletteEntries(tempCanvas->Handle,0,256,SysPal.lpal.palPalEntry); image2save->Picture->Bitmap->Palette = CreatePalette(dynamic_cast<const tagLOGPALETTE *>(&SysPal.lpal)); image2save->Picture->SaveToFile(fileName); } void __fastcall TForm1::Button1Click(TObject *Sender) { static_cast<TMyControl*>(MyControl1)->SaveAsBmp("../foo.bmp"); } void __fastcall TForm1::FormCreate(TObject *Sender) { TMyControl* control = new TMyControl(Form1); // The owner will clean this up. MyControl1 = control; control->Parent = this; control->Visible = true; }
Delphi Examples:
{ The GetFormImage allows you to easily obtain a bitmap of a form. The following method can be added to a custom TWinControl descendant to save itself as a bitmap. Check the produced BMP file to confirm. Click the button and then double click on the newly created foo.bmp file to view. } type TMyControl = class(TColorListBox) procedure SaveAsBmp(fileName: TFileName); end; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; MyControl1: TMyControl; implementation {$R *.dfm} type LogPal = record lpal : TLogPalette; dummy:Array[0..255] of TPaletteEntry; end; procedure TMyControl.SaveAsBmp(fileName: TFileName); var Source: TComponent; SysPal : LogPal; tempCanvas: TCanvas; sourceRect, destRect: TRect; image2save: TImage; notUsed: HWND; begin tempCanvas := TCanvas.Create; try tempCanvas.Handle := GetDeviceContext(notUsed); image2save:=TImage.create(self); try with image2save do begin Height := Self.Height; Width := Self.Width; destRect := Rect(0,0,Width,Height); sourceRect := destRect; Canvas.CopyRect(destRect,tempCanvas,sourceRect); SysPal.lPal.palVersion:=$300; SysPal.lPal.palNumEntries:=256; GetSystemPaletteEntries( tempCanvas.Handle,0,256,SysPal.lpal.palPalEntry); Picture.Bitmap.Palette:= CreatePalette(Syspal.lpal); end; image2save.Picture.SaveToFile(fileName); finally image2save.Free; end; finally tempCanvas.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin MyControl1.SaveAsBmp('foo.bmp'); end; procedure TForm1.FormCreate(Sender: TObject); begin MyControl1:= TMyControl.Create(Form1); MyControl1.Parent:= Form1; MyControl1.visible := true; end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|