![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про Canvas.CopyRect и фактическую ширину формы. [D7, XP]
igorium © (2011-10-07 15:41:00)Всем привет.
Задача сохранить все, что видно на форме в графический файл.
Грубо говоря сделать принтскрин формы, но проблема усугубляется тем, что форма не помещается на экране, а для её просмотра нужно использовать скрулеры.
Я делаю так:
procedure TTreeForm.bbClick(Sender: TObject);
var Bit : TBitmap;
begin
Bit := TBitmap.Create;
Bit.Width := TreeForm.ClientWidth;
Bit.Height := TreeForm.ClientHeight;
Bit.Canvas.CopyRect(Rect(0, 0, TreeForm.ClientWidth, TreeForm.ClientHeight), TreeForm.Canvas, Rect(0, 0, TreeForm.ClientWidth, TreeForm.ClientHeight));
Bit.SaveToFile('d:\screen.bmp');
end;
Но сохраняется только видимая на экране часть формы.
А у меня форма занимает несколько экранов и нужно, чтобы ВСЯ форма сохранилась в файл.
Что интересно - у меня разрешение экрана 1024х768.
Я пробовал ручками увеличить ширину формы в инспекторе объектов - максимальная длина, которую он выдает - это 1036 пикселей.
Хотя реальная ширина формы у меня будет ~2400 (специально ставлю кнопку с left=400, width=2000)
Loginov Dmitry (2011-10-08 22:41:00) [21]
> Делал по справке
> FormImage := GetFormImage;
> FormImage.SaveToFile(ExtractFilePath(ParamStr(0)) + 'screen.
> bmp');
>
> Но результат один к одному как у меня - сохраняет только
> видимую на момент сохранения часть формы.
Должно работать.
Может с файлами напутал?
igorium (2011-10-08 16:15:00) [22]
> Cobalt © (07.10.11 18:06) [5]
> Welcome to
> function TCustomForm.GetFormImage: TBitmap;
Объясните дураку - почему у меня ничего не работает???
stas (2011-10-07 21:54:00) [23]Да скомпонуйте битмэп так как расположены image на форме да и все.
Cobalt (2011-10-07 18:06:00) [24]Welcome to
function TCustomForm.GetFormImage: TBitmap;
igorium (2011-10-07 17:25:00) [25]
> Игорь Шевченко © (07.10.11 16:46) [3]
> GetFormImage
К сожалению не помогло :(
Делал по справке
FormImage := GetFormImage;
FormImage.SaveToFile(ExtractFilePath(ParamStr(0)) + 'screen.bmp');
Но результат один к одному как у меня - сохраняет только видимую на момент сохранения часть формы.
Игорь Шевченко (2011-10-07 16:46:00) [26]GetFormImage
igorium (2011-10-07 16:20:00) [27]Ну бывает.
Мне в одной и той же проге надо реализовать:
1) сохранение в файл, чтобы потом можно было обратно выдернуть и подредактировать
2) сохранение в ГРАФИЧЕСКИЙ файл - по сути печать результата.
stas (2011-10-07 16:06:00) [28]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1317964121&n=18
то что-то длинное, то рубашка короткая )