Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2014, 13:50   #1
tred
чайник
Пользователь
 
Аватар для tred
 
Регистрация: 24.06.2010
Сообщений: 44
Радость прокомментируйте код пожалуста

Код:
unit ScrnCap;   
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.
интересует функция GetSystemPalette , что она делает ?
tred вне форума Ответить с цитированием
Старый 10.01.2014, 14:25   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Создаёт палитру для TBitmap.
Streletz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокомментируйте код stenl1 C# (си шарп) 4 18.10.2012 06:52
Прокомментируйте код Nicolas_C++ Общие вопросы C/C++ 4 03.08.2012 13:45
Прокомментируйте код ArmanPrestige Общие вопросы C/C++ 3 10.07.2012 08:21
Прокомментируйте маленький код sektor2011 Visual C++ 0 12.05.2011 17:24
Прокомментируйте код ZyaT-OK Помощь студентам 11 17.01.2011 21:48