Вверх ↑
Разработчик
Ответов: 26156
Рейтинг: 2127
#1: 2022-01-26 03:00:08 ЛС | профиль | цитата
andrestudio, протестировал твой код по отрисовки клиентской области, немного его упростив, там еще лишнее сообщение WM_ERASEBKGND посылается, оно там совершенно не нужно, тк все это реализуется ключами WM_PRINTCLIENT
  scrDC := Control.Canvas.Handle;
OffsetViewportOrgEx(scrDC, -Control.Left, -Control.Top, org);
SendMessage(FParent.Handle, WM_PRINTCLIENT, scrDC, PRF_CLIENT or PRF_ERASEBKGND);
SetViewportOrgEx(scrDC, org.x, org.y, nil);
Но, увы, чуда не произошло, и видно наложение на другие контролы, да еще и фликерит немного:



А вот так получается с применением регионов, и фликерит меньше, но есть небольшой хвост при перемещении полузнка:



Проще, наверное, альфа наложение на контекст сделать, по крайней мере, быстродействие будет выше, но это если делать полную прозрачность.
карма: 22

0
Редактировалось 3 раз(а), последний 2022-01-26 03:18:12