Консультация № 29786
18.11.2005, 20:07
0.00 руб.
0 5 5
Здравствуйте уважаемые эксперты. Подскажите пожалуйста как картинку (если точно скрин) из буфера сохранить в файл.

Обсуждение

Неизвестный
18.11.2005, 22:15
общий
это ответ
<i>Здравствуйте, <b>Tarantul</b>!</i>
см. пример в приложении...

Приложение:
uses ClipBrd;...var BMP: TBitmap;begin BMP:= TBitmap.Create; with BMP do try Assign(Clipboard); SaveToFile(‘.\clipbrd.bmp‘); finally Free; end;end;
Неизвестный
18.11.2005, 23:13
общий
это ответ
Здравствуйте, Tarantul!
Наверное хотите сделать прогу чтобы снимала скриншоты и сохраняла автоматически! Что ж поможем чем сможем!

Вот сама процедура снимка.

procedure ScreenShot(Bild: TBitMap);
var
c: TCanvas;
r: TRect;
begin
c := TCanvas.Create;
c.Handle := GetWindowDC(GetDesktopWindow);
try
r := Rect(0, 0, Screen.Width, Screen.Height);
Bild.Width := Screen.Width;
Bild.Height := Screen.Height;
Bild.Canvas.CopyRect(r, c, r);
finally
ReleaseDC(0, c.Handle);
c.Free;
end;
end;

А вот пример использования

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Visible := False;
Sleep(750); // some delay, ein wenig Zeit geben
ScreenShot(Image1.Picture.Bitmap);
Form1.Visible := True;
Image1.Picture.SaveToFile(‘C:\Temp.bmp‘);
end;

Удачи в кодинге!

Неизвестный
19.11.2005, 01:50
общий
это ответ
Здравствуйте, Tarantul!
Используйте процедуру:

procedure LoadFromClipboardFormat(AFormat: Word; AData: THandle; APalette: HPALETTE);

которая загружает изображение в TBitmap в соответствии с выбранным форматом.
Константы форматов начинаются с "CF_" (CF_BITMAP, CF_TIFF, и т.д.).
В приложении приведен код, который сначала загружает изображение в Image1, а затем сохраняет его в файл.
Удачи!

Приложение:
try Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BITMAP,ClipBoard.GetAsHandle(CF_BITMAP),0);{грузим изображение из буфера обмена ClipBoard} except else ShowMessage(‘ошибка загрузки изображения из буфера обмена :)‘); end;if SavePictureDialog1.Execute then begin Image1.Picture.SaveToFile(SavePictureDialog1.FileName);{сохраняем изображение в файле} end;
давно
Мастер-Эксперт
425
4118
19.11.2005, 05:58
общий
это ответ
Здравствуйте, Tarantul!
Насколько я помню, скины делаются как bmp. Тогда Вам нужно создать промежуточную переменную типа TBitmap, вставить в нее картинку из буфера обмена, а потом Bitmap записать на диск:
var
bp: TBitmap;
Begin
bp:=TBitmap.Create;
bp.Assign(Clipboard); {Копирование картинки из буфера в битмап}
bp.SaveToFile(‘Имя_файла.bmp‘); {Запись битмапа в файл}
End;
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
19.11.2005, 09:58
общий
это ответ
Здравствуйте, Tarantul!
uses Clipbrd;
procedure TForm1.FormCreate(Sender: TObject);
var
bmp:TBitmap;
begin
bmp:=TBitmap.Create;
bmp.Assign(Clipboard);
bmp.SaveToFile(‘c:\Screen.bmp‘);
bmp.Free;
end;
Форма ответа