![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранить рисунок с 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 как единое целое в файл.
картинки в поток - поток в файл