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

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

Сохранить рисунок с TPanel


DelphiLexx ©   (2006-01-11 17:39:00) 

Есть наследник от TPanel:

TMyPicturePanel = class(TPanel)

private
image1: TImage;
...
imageN: TImage; {N - определенное кол-во компонентов TImage которые размещаются на TPanel'и}
...
end;

Задача состоит в следующем:
Создаём экземпляра  класса MyPicturePanel: TMyPicturePanel;
Нужно каким-то образом сохранить картинки размещенные на TMyPicturePanel как единое целое в файл.
Как это сделать - может быть свойство какое -либо добавить в TMyPicturePanel.


Leonid Troyanovsky   (2006-01-20 12:59:00) [1]


> KA_ ©   (20.01.06 11:53) [7]
> Леонид, в первом посте сказано, что имейджей много.


Много, и они на панели.
Хотя, конечно,  рисовать непосредственно на панели, было б удобней.
Однако, с другой стороны, если б картинки были там, то:
1. как рисовать на Canvas панели уже было известно;
2. вопрос должен был звучать так: как сохранить картинку на канве
(панели) в файл (а не картинки, как единое целое).

Впрочем, наши дедуктивные выводы могут остаться неподтвержденными.

--
Regards, LVT.


Плохиш   (2006-01-20 12:33:00) [2]


> Как это сделать - может быть свойство какое -либо добавить
> в TMyPicturePanel.

Конечно надо, только не свойство, а два метода SaveToFile и LoadFromFile.


KA_   (2006-01-20 11:53:00) [3]

Леонид, в первом посте сказано, что имейджей много.


Leonid Troyanovsky   (2006-01-20 09:53:00) [4]


> KA_ ©   (18.01.06 16:18) [3]

> Канва умеет себя легко копировать. Но у TPanel канва недоступна.

> kostan ©   (20.01.06 04:44) [5]

> Можно создать канву для панели:


 А зачем канва панели, если рисуют на TImage?

--
Regards, LVT.


kostan   (2006-01-20 04:44:00) [5]

Можно создать канву для панели:
     CanvasOtobr:=tcanvas.Create;
     CanvasOtobr.Handle:=GetDC(panel1.handle);


MBo   (2006-01-18 16:31:00) [6]

>KA_
У него и так наследник...


KA_   (2006-01-18 16:18:00) [7]

А можно поизвращаться :)
Канва умеет себя легко копировать. Но у TPanel канва недоступна.
Применим hack-класс:

type
 THackPanel = class(TCustomControl)
 public
    property Canvas;
 end;


Теперь у TMyPicturePanel сделаем метод сохранения в файл:

procedure TMyPicturePanel.SaveToFile(const aFileName: String);
var
 Bitmap: TBitmap;
begin
 with TBitmap.Create do
 try
   Width := Self.ClientWidth;
   Height := Self.ClientHeight;
   Bitmap.Canvas.CopyRect(Self.ClientRect, THackPanel(Self).Canvas, Self.ClientRect);
 finally
   Free;
 end;  
end;


Leonid Troyanovsky   (2006-01-11 18:25:00) [8]


> DelphiLexx ©   (11.01.06 17:39)  

> Нужно каким-то образом сохранить картинки размещенные на
> TMyPicturePanel как единое целое в файл.


Делаем битмап размером с панель.
Раскрашиваем его цветом панели (если надо).
Затем  
bmp.Canvas.CopyRect (Image1.BoundsRect, Image1.Picture.Bitmap.Canvas,
Image1.ClientRect); и т.д.
Сохраняем в файл, bmp.Free.

--
Regards, LVT.


DVM   (2006-01-11 18:21:00) [9]


> Нужно каким-то образом сохранить картинки размещенные на
> TMyPicturePanel как единое целое в файл.

картинки в поток - поток в файл


Наверх

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