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

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

Сохранить форму как файл графики


Страницы:   1 2

Surprising ©   (2002-01-06 17:36:00) 

Мастера, имеется форма с несколькими графиками как мне её сохранить в графическом формате(jpg или bmp) для последующего редактирования изображения или печати.


DK   (2002-01-07 03:39:00) [21]

2Z- Зачем такая куча кода???

var
FBitmap: TBitmap;
DC: HDC;
H: hWnd;
P: TPoint;
R: TRect;
begin
FBitmap := TBitmap.Create;
H := Form1.Handle;
DC := GetWindowDC(H);
GetWindowRect(H, R);
FBitmap.Width := R.Right - R.Left;
FBitmap.Height := R.Bottom - R.Top;
BitBlt(FBitmap.Canvas.Handle, 0, 0, FBitmap.Width, FBitmap.Height, DC, 0, 0, SRCCOPY);
FBitmap.SaveToFile("MyForm.bmp");
FBitmap.Destroy;
end;


Z   (2002-01-06 21:54:00) [22]

Сохраняй эти все функции в отдельный юнит, типа ScrnCopy.pas
Дальше в uses вставляешь ScrnCopy.

Дальше делаешь:

var
bmp: TBitmap;
begin
bmp:=TBitMap.Create //подготавливаем буфер для рисунка
bmp:=CaptureScreen;
bmp.savetofile("c:\screen.bmp");
end;


Pat   (2002-01-06 21:12:00) [23]

>Surprising
Если тебе надо просто сохранить окно в графическом режиме, то
сделай форму активной, нажми Alt+PrintScreen и вставляй из буфера в любой графический редактор...


Surprising   (2002-01-06 18:53:00) [24]

Эти все функции работают отдельно друг от друга?
В какой файл сохраниться эта картинка или она будет в буфере?


Z   (2002-01-06 18:24:00) [25]

unit ScrnCopy;
interface
uses WinTypes, WinProcs, Forms, Classes, Graphics, Controls;
{ Копирует прямоугольную область экрана }
function CaptureScreenRect(ARect : TRect) : TBitmap;
{ Копирование всего экрана }
function CaptureScreen : TBitmap;
{ Копирование клиентской области формы или элемента }
function CaptureClientImage(Control : TControl) : TBitmap;
{ Копирование всей формы элемента }
function CaptureControlImage(Control : TControl) : TBitmap;
{===============================================================}
implementation
function GetSystemPalette : HPalette;
var
PaletteSize:integer;
LogSize:integer;
LogPalette:PLogPalette;
DC:HDC;
Focus:HWND;
begin
result:=0;
Focus:=GetFocus;
DC:=GetDC(Focus);
try
PaletteSize:=GetDeviceCaps(DC, SIZEPALETTE);
LogSize:=SizeOf(TLogPalette)+(PaletteSize-1)*SizeOf(TPaletteEntry);
GetMem(LogPalette, LogSize);
try
with LogPalette^ do
begin
palVersion:=$0300;
palNumEntries:=PaletteSize;
GetSystemPaletteEntries(DC, 0, PaletteSize, palPalEntry);
end;
result:=CreatePalette(LogPalette^);
finally
FreeMem(LogPalette, LogSize);
end;
finally
ReleaseDC(Focus, DC);
end;
end;
function CaptureScreenRect(ARect : TRect) : TBitmap;
var
ScreenDC : HDC;
begin
Result:=TBitmap.Create;
with result, ARect do begin
Width:=Right-Left;
Height:=Bottom-Top;
ScreenDC:=GetDC(0);
try
BitBlt(Canvas.Handle, 0,0,Width,Height,ScreenDC, Left, Top, SRCCOPY );
finally
ReleaseDC(0, ScreenDC);
end;
Palette:=GetSystemPalette;
end;
end;
function CaptureScreen : TBitmap;
begin
with Screen do
Result:=CaptureScreenRect(Rect(0,0,Width,Height));
end;

function CaptureClientImage(Control : TControl) : TBitmap;
begin
with Control, Control.ClientOrigin do
result:=CaptureScreenRect(Bounds(X,Y,ClientWidth,ClientHeight));
end;

function CaptureControlImage(Control : TControl) : TBitmap;
begin
with Control do
if Parent=Nil then
result:=CaptureScreenRect(Bounds(Left,Top,Width,Height))
else
with Parent.ClientToScreen(Point(Left, Top)) do
result:=CaptureScreenRect(Bounds(X,Y,Width,Height));
end;
end.


Страницы:   1 2

Наверх

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