Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

снимок TPanel


TPel ©   (2007-08-23 13:31:00) 

в bmp , это компонент TPanelText = class(TPanel)
как ?


TPel   (2007-08-24 09:47:00) [1]

отбой неподписанный Handle был от формы


TPel   (2007-08-24 09:45:00) [2]

кокретно код выдает bmp 185х41 того же цвета,но без надписи
сама форма 544х375, панель 185х41
а надписи на панели нет PANEL.Caption:='TEST GRAPH';

хотя при снятии все формы она снимается
FormImage := GetFormImage;


TPel   (2007-08-23 22:40:00) [3]

увидел , с форма нормально, а панель не снимает
принудительно передаю обьект

function TForm1.GetFormImageEx(P:TPanel): TBitmap;
var
 Ofs: Integer;
begin
 Result := TBitmap.Create;
 try
   Result.Width := P.ClientWidth;
   Result.Height := P.ClientHeight;
   Result.Canvas.Brush := P.Brush;
   Result.Canvas.FillRect(P.ClientRect);
   Result.Canvas.Lock;
   try
     if GetWindowLong(Handle, GWL_STYLE) and WS_BORDER <> 0 then
       Ofs := -1  // Don't draw form border
     else
       Ofs := 0;  // There is no border
     PaintTo(Result.Canvas.Handle, Ofs, Ofs);
   finally
     Result.Canvas.Unlock;
     Result.SaveToFile('c:\11.bmp');
   end;
 except
   Result.Free;
   raise;
 end;
end;


DrPass   (2007-08-23 22:23:00) [4]


> TPel   (23.08.07 22:14) [3]

...а внутрь GetFormImage заглядывал?


TPel   (2007-08-23 22:14:00) [5]

в коде засовывается по указателю, а как выдрать из памяти
аналог Save ? в исходнике происходит печать без буферов

var
 FormImage: TBitmap;
 Info: PBitmapInfo;
 InfoSize: DWORD;
 Image: Pointer;
 ImageSize: DWORD;
 Bits: HBITMAP;
 DIBWidth, DIBHeight: Longint;
 PrintWidth, PrintHeight: Longint;
begin
FormImage := GetFormImage;
Bits := FormImage.Handle;
GetDIBSizes(Bits, InfoSize, ImageSize);
Info := AllocMem(InfoSize);
Image := AllocMem(ImageSize);
GetDIB(Bits, 0, Info^, Image^);
           with Info^.bmiHeader do
           begin
             DIBWidth := biWidth;
             DIBHeight := biHeight;
           end;

....
FormImage.Free;

end;


DrPass   (2007-08-23 13:57:00) [6]

Посмотри реализацию метода Print у формы. Принцип тот же самый


wp2   (2007-08-23 13:53:00) [7]

ты хочешь рисунок панели сохранить в файл?


Наверх

Титульная страница Поиск, карта сайта Написать письмо