Здравствуйте, tim_, Вы писали:
D>Делал DC:=GetDC(0) — та же фигня!
_>Ну, это где-то что-то у вас не правильно, т.к. GetDC(0) вегда возвращает контекст экрана.
Чесно говоря не уверен.... Впрочем, может я и заблуждаюсь, я раскопал такой код в исходнике TCustomLabel, там контекст вывода лэйбла получают именно так...
_>Касательно вашего вопроса: а вы уверены, что этот самый Parent хранит в контексте себя любимого без всех компонентов, находящихся поверх него? Исследуйте повнимательней алгоритм реагирования TWinControl`а на событие WM_PAINT, а так же WM_ERASEBKGND. В первом случае вообще идет clipping всех регионов дочерних компонентов, т. е. те части TWinControla, которые не видны (находятся под дочерними компонентами) попросту не зарисовываются в обработчике самого Parenta. А вот второе сообщение иногда полезно вообще проигнорировать, т. к. из-за временного интервала между этими сообщениями всегда происходит мелькание изображения.
Спасибо — очень полезно. Честно говоря, мне следовало бы покапаться самому в этом (я так и сделаю), но щас надо срочно написать компонент, поэтому и гружу, еще раз спасибо.
_>Хотелось бы узнать, чисто из любопытства, зачем вам необходимо работать с невидимым изображением? Уж не для (полу)прозрачности ли?
Да нет, просто надо немного преобразовать кусок фона, на который ложится компонент.
А что если для прозрачности?
D>И еще, как заставить перерисоваться Parent окно в локальном TRect'e?
_>Parent.PaintTo(..);
Вот большое спасибо... — будет время — буду копаться сам в этом, а сейчас Ваша помощь более, чем своевременная.