![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Парни, функция пашет, но есть два но:
- заглавие окна не захватывает - сохраняет в указанное место, а не в каталог с программой как решить? спасибо Код:
function GetFormExImage(const AForm : TForm) : TBitmap;
begin
Result := nil;
if AForm = nil then Exit;
Result := TBitmap.Create;
Result.Height := AForm.ClientHeight;
Result.Width := AForm.ClientWidth;
Result.Canvas.Brush := AForm.Brush;
Result.Canvas.FillRect(AForm.ClientRect);
Result.Canvas.Lock;
try
Result.Canvas.CopyRect(Rect(0,0,Result.Width,Result.Height),
AForm.Canvas,AForm.ClientRect);
finally
Result.Canvas.UnLock;
end;
end;
//-------------------------
procedure TForm1.Button2Click(Sender: TObject);
var
ABitmap : TBitmap;
begin
ABitmap := GetFormExImage(Self);
if ABitmap <> nil then begin
ABitmap.SaveToFile("C:\Screen.bmp");
ABitmap.Free;
end;
end;Последний раз редактировалось Admin, 21.05.2012 в 13:24. |
|
#2
|
||||
|
||||
|
потому что:
1. Result.Canvas.CopyRect(Rect(0,0,Result.Width,Resul t.Height), AForm.Canvas,AForm.ClientRect); 2. ABitmap.SaveToFile("C:\Screen.bmp"); |
|
#3
|
|||
|
|||
|
а по поводу первого можно чуть подробнее?)
|
|
#4
|
||||
|
||||
|
у тебя копируется клиентская часть окна (ClientRect), естественно бордюры и заголовок в него не входят. решение: копировать весь прямоугольник. размер TBitmap тоже придется увеличить. причем копировать с рабочего стола.
Последний раз редактировалось NumLock, 21.05.2012 в 10:37. |
|
#5
|
|||
|
|||
|
Все, разобрался, норм теперь
Спасибо всем! |
|
#6
|
||||
|
||||
|
Цитата:
|