![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рисование на канве другого приложения
TStas © (2006-05-16 19:17:00)Из любопытства пробовал рисовать по канве другого приложения: через FindWindow получал Handle окна, дальше Canva:=Tcanvas.Create; Canva.Handle:=H; //Присваиваю Handle
Но почему-то ничего не выводилось. Однако подобным образом можно рисовать по рабочему столу. Почему не вывелся рисунок или это каким-то образом сами винды запрещают?
TStas (2006-05-17 15:36:00) [1]>REA Canvas.Handle := GetDC(Handle); :) Спасибо, торможу, именно так по столу и рисовал. А все функции рисования без канвы от рисования по канве отличаются на один параметр, как раз DC. Канва же это надстройка просто. ТОрможу. :)
Neo Trinitron (2006-05-17 10:56:00) [2]Может быть у окна на котором идёт рисование вызывается обработчик события OnPaint который разрушает нарисованое и восстанавливает прежний вид окна?...
REA (2006-05-17 10:10:00) [3]Canvas.Handle := GetDC(Handle);
Try
...
Finally
ReleaseDC(Handle, Canvas.Handle);
End;
Rial (2006-05-16 20:55:00) [4]>>Однако подобным образом можно рисовать по рабочему столу
странно, не знал :))
Используй
LineTo(DC: HDC; X, Y: Integer)
Pie(DC: HDC; X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer)
Rectangle(DC: HDC; X1, Y1, X2, Y2: Integer)
и прочие функции из модуля Windows.
Первым параметром передается DC:HDC, причем:
Начало работы
DC:=GetDC(Handle);//Тот хендл, кот. ты получил
...
Конец работы
releaseDC(Handle,DC);
Функциональность та же, что и с Canvas.
С кистями попробуй разобраться сам.