![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
сабж. нужно сделать что-то вроде этого
![]() у себя на Image. проблема в том, что изображение на image отказывается обновляться (по таймеру, 20мс), код таймера: Код:
Image1.Canvas.Handle:=getDC(whandl); Image1.Canvas.Refresh; изначально хендл окна получен при помощи Код:
whandl:=WindowFromPoint(mouse.CursorPos); как же всетаки правильно обновлять изображение? p.s. масштабирование не учитывать. Последний раз редактировалось NekitoSSSS, 07.06.2011 в 17:02. |
|
#2
|
||||
|
||||
|
А Image1.Repaint?
|
|
#3
|
||||
|
||||
|
все работает, спасибо, но небольшая проблема: если при захвате мой канвас был маленький, всмысле image1.align:=alclient, а форма сжата немного, то при втором захвате другого окна, которое наприме будет больше в 2 раза, оно(второе окно) обрезается ровно на столько, сколько и были изначальные размеры image. всмысле если даже растянуть форму сильнее. просто сервый цвет в том месте, которое раньше не занимал image.
вот так: ![]() Последний раз редактировалось NekitoSSSS, 07.06.2011 в 17:27. |
|
#4
|
||||
|
||||
|
Посмотри тут, может быть найдешь то, что тебе нужно: http://www.progz.ru/t24759/
|
|
#5
|
||||
|
||||
|
GriLab, то что надо. использовал
Код:
procedure ScreenShot(Bild: TBitMap);
var
c: tcanvas;
r: TRect;
begin
c := tcanvas.Create;
c.Handle := GetWindowDC(whandl);
try
GetWindowRect(whandl,r);
r.Right:=r.Right-r.Left;
r.Bottom:=r.Bottom-r.Top;
r.Left:=0;
r.Top:=0;
// r := Rect(0, 0, Screen.Width, Screen.Height);
Bild.Width := r.Right;
Bild.Height := r.Bottom;
Bild.Canvas.CopyRect(r, c, r);
finally
ReleaseDC(0, c.Handle);
c.Free;
end;
end;;только вместо GetDesktopWindow подсунул свой хендл. все отлично обновляет, спасибо, плюсанул обоим =) Последний раз редактировалось NekitoSSSS, 07.06.2011 в 17:48. |