![]() |
![]() |
shtangist 29.04.2004 - 11:23 | Непарвильно сформулировал!Вот!имеется программа на Builder 6.Как с помощью нажатия кнопки на форме вызвать диалоговое окно для сохранения файлов,и сохранить форму и все что на ней в виде рисунка(bmp,gif файла)????Если не трудно,помогите с кодом |
UE 1 - 29.04.2004 - 11:54 |
Глянть в хелпе TCanvas::TCanvas, далее Example. Там такой пример: --- The GetFormImage allows you to easily obtain a bitmap of a form. The following code allows you to obtain a bitmap for any other control. The name of the control to draw is read from an edit control. typedef struct { TLogPalette lpal; TPaletteEntry dummy[256]; } LogPal; void __fastcall TForm1::SaveAsBmpClick(TObject *Sender) { TComponent *Source = FindComponent(Edit1->Text); if ((!Source->InheritsFrom(__classid(TControl))) || ((!Source->InheritsFrom(__classid(TWinControl))) && (((TControl *)Source)->Parent == 0))) { Beep(); ShowMessage(Edit1->Text + " is not a valid control."); return; } TCanvas *tempCanvas = new TCanvas; try { HWND notUsed; TControl *pCtrl = (TControl *)Source; tempCanvas->Handle = pCtrl->GetDeviceContext(notUsed); TImage *image2save = new TImage(Form1); try { image2save->Height = pCtrl->Height; image2save->Width = pCtrl->Width; TRect destRect = Rect(0,0,pCtrl->Width,pCtrl->Height); TRect sourceRect; if (pCtrl->InheritsFrom(__classid(TWinControl))) sourceRect = destRect; else sourceRect = pCtrl->CoundsRect; image2save->Canvas->CopyRect(destRect, tempCanvas, sourceRect); LogPal SysPal; SysPal.lPal.palVersion = 0x300; SysPal.lPal.palNumEntries = 256; GetSystemPaletteEntries(tempCanvas->Handle,0,256,SysPal.lpal.PalpalEntry); image2save->Picture->Bitmap->Palette = CreatePalette(Syspal.lpal); if (SaveDialog1->Execute()) image2save->Picture->SaveToFile(SaveDialog1->FileName); } __finally { delete image2save; } } __finally { delete tempCanvas; } } --- |