К списку форумов К списку вопросов
помогите!
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;
  }
}
---

К списку вопросов на форуме Программирование

>>