|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Canvas = "зеркало" окна
сабж. нужно сделать что-то вроде этого
у себя на 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?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#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. |