![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно нарисовать вне формы и поверх остальных форм [D7, WinXP]
Dibroff © (2005-09-04 10:55:00)Создаю сплеш скрин так сказать, но хочу его создать как в фотошопе последнем, то есть вывод пнг с альфаканалом с тенями и тд. Обычная отрисовка региона формы по картинке тут не прокатит. Ну вот написал следующее.
var c: TCanvas;
...
c := TCanvas.Create;
...
procedure DrawImage(myImage: TImage);
begin
c.Handle := GetDC(GetWindow(GetDesktopWindow, GW_OWNER));
c.Draw(200,200,myImage.Picture.Graphic);
end;
...
//после того как все формы создались я пытаюсь очистить канву
c.FillRect(c.cliprect);
c := nil;
c.Free;
Рисует она и выводит графику как надо. НО проблема остается в том, что картинка эта остается и ее никак не вычистить. Все эти методы не очищают канву. Я так понимаю что надо посылать сообщения всем открытым окнам и рабочему столу о необходимости перерисовки, но это кажется полным бредом. Нельзя ли изменить мой код так, чтобы моя картинка рисовалась не на чужих окнах, а на невидимом DC поверх всех окон как-нибудь (я просто понятия не имею как это сделать). Ну или как-нибудь иначе, но чтобы я мог в после создания форм грамотно очистить канву. Пожалуйста видоизмините мой код или покажите свой примерчик. заранее спасибо.
Dibroff (2005-09-04 14:47:00) [1]Да пробовал и это, не помогает
nes (2005-09-04 13:41:00) [2]Invalidaterect
Dibroff (2005-09-04 12:37:00) [3]Спецы, просыпаемся ;)