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

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

Как сфоткать полупрозрачные окна [NT4, Win2k, WinXP]


i-s-v ©   (2004-08-01 13:34:00) 

Добрый день, мастера. Помогите!
Вот процедура, которая фоткает прямоугольную область ARect экрана и заносить скопированное в Bit. Вроде все просто... Проблема: не снимаются полупрозрачные окна под ХРюшею. Что делать?

procedure CaptureScreenRect(Bit: TBitmap; ARect: TRect);
var
 ScreenDC: HDC;
begin
 with Bit, 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;


i-s-v   (2004-08-04 02:53:00) [1]

NEED HELP!!!!


i-s-v   (2004-08-02 12:41:00) [2]

Не, люди, не получается... Canvas.CopyRect аналогична StretchBlt... Как угодно уже пробовал...


i-s-v   (2004-08-02 12:40:00) [3]

Не, люди, не получается... Canvas.CopyRect аналогична StretchBlt... Как угодно уже пробовал...


i-s-v   (2004-08-02 11:28:00) [4]

Спасибо, попробую


GetWindowDC   (2004-08-01 16:23:00) [5]

Извиняйте, опоздал:)


GetWindowDC   (2004-08-01 16:21:00) [6]

Попробуй  GetWindowDC. GetDC возвращает клиентскую область, а  GetWindowDC - полностью окно.


Timedrops   (2004-08-01 16:20:00) [7]

вот так попробуй
ты копируешь ф-цией BitBlt
а в этом примере Canvas.CopyRect

procedure TScrnFrm.GrabScreen;
var
 DeskTopDC : HDc;
 DeskTopCanvas : TCanvas;
 DeskTopRect: TRect;
begin
 DeskTopDC := GetWindowDC(GetDeskTopWindow);
 DeskTopCanvas := TCanvas.Create;
 DeskTopCanvas.Handle := DeskTopDC;
 DeskTopRect := Rect(0,0,Screen.Width,Screen.Height);
 // Отображение рабочего стола на экранную форму с именем ScrnForm
 ScrnForm.Canvas.CopyRect(DeskTopRect,DeskTopCanvas,DeskTopRect);
 ReleaseDC(GetDeskTopWindow,DeskTopDC);
end;


i-s-v   (2004-08-01 16:12:00) [8]

Ну что, никто не знает?


Наверх

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