![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться с FastDIB [D5, Win95/98, WinME, NT4, Win2k, WinXP]
SimpleUser © (2003-04-01 20:47:00)Пытаюсь поместить снимок экрана в FastDIB следующим образом:
{--}
VAR
FD:TFastDIB;
BEGIN
FD:=TFastDIB.create;
FD.SetSize(Screen.Width,Screen.Height,24);
BitBlt(FD.Handle,0,0,Screen.Width,Screen.Height,GetWindowDC(GetDesktopWindow),0,0,SRCCOPY);
END;
{-}
В чем тут проблема?
i-C3H7OH (2003-04-02 15:31:00) [1]точно-точно
FD.hDC :HDC;
а
FD.Handle :HBITMAP;
Stexen (2003-04-02 12:09:00) [2]и деструктор не забудь
Stexen (2003-04-02 12:08:00) [3]Дак ты че делаешь то, там же у него не хэндел надо брать а HDC, то есть
в твоем случае
BitBlt( FD.hDC,0,0,Screen.Width,Screen.Height,GetWindowDC(0),0,0,SRCCOPY);
SimpleUser (2003-04-01 21:39:00) [4]Все добавил, а результат такой-же.
Может надо вместо FD.Handle другой его handle передавать, потому что если использовать просто canvas объекта Image:
BitBlt(Image1.canvas.Handle,0,0,Screen.Width,Screen.Height,GetWindowDC(GetDesktopWindow),0,0,SRCCOPY), то снимок делается, а с FastDIB непонятно.
Еще заметил один глюк у себя:
Если делать снимок экрана на Image и потом сохранить его на диске, то FastDIB не может его загрузить.
i-C3H7OH (2003-04-01 21:14:00) [5]1. забыл деструктор
2. GetWindowDC(GetDesktopWindow) - создало HDC, а кто удалять будет (ReleaseDC)
3. вместо GetDesktopWindow передавай 0