![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ни как не соображу, как получить изображение под формой. [D7, Win95/98]
Shuric © (2005-12-28 16:41:00)На ум приходит перечисление всех форм, отброс не перекрывающих необходимую и вывод изображения каждой в мой DC, что есть муторно и долго.
Собственно нет ли способа попроще?
OldNaum (2006-01-03 16:52:00) [1]были четко сформулированные примеры окна с полупрозрачностью как в Winamp'e от одного из мастеров. не помню, то ли MBo, то ли еще кто...
Deka (2006-01-03 14:25:00) [2]Тогда такое окошко перемещать нельзя - вся "прозрачность" разом пропадет. И при появлении новых либо при перемещении старых окошек эффект тоже пропадет. В общем подходит только для статики.
antonn (2006-01-02 07:01:00) [3]меняйте телепатор, товарищи:)
как я понимаю, нужно сделать форму с переменной прозрачностью (например у acrobat Reader'а сплаш - квадратик с информацией и шикарная затененность на его фоне). Под win2k и выше можно использовать png и UpdateLayeredWindow(), на ОСях ниже так не получится.
Чтобы сделать вид полупрозрачности, берем фон под формой, и на этот фон накладываем полупрозрачную маску, и обработанный фон помещаем на форму. Т.е. вручную рисуем то, что в вин2к рисует система. Правда окно то на самом деле прозрачным не будет, но по виду не отличить:)
попробуй так:
var BM:TBitmap;
procedure TForm1.Button1Click(Sender: TObject);
var DC:HDC;
begin
ShowWindow(Handle,SW_Hide);
sleep(1);
DC:=GetDC(0);
BitBlt(BM.Canvas.Handle,0,0,BM.Width,BM.Height,DC,left,top,SrcCopy);
ReleaseDC(0,DC);
ShowWindow(Handle,SW_Show);
BitBlt(canvas.Handle,0,0,BM.Width,BM.Height,BM.Canvas.Handle,0,0,SrcCopy);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
BM:=TBitmap.Create;
BM.Width:=width;
BM.Height:=Height;
end;
возможно нужно будет увеличить sleep(), чтобы окна перерисовались. А еще этот способ не "видит" прозрачные окна.
Igor_thief (2006-01-01 21:39:00) [4]Вот одного не пойму, зачем получать изображение под контролом?
Shuric (2005-12-29 15:44:00) [5]Ты непонял, как раз интересует, а то парился бы я :) Форма на основе региона. Чтобы получить нужный эффект картинка из Png должна накладыватся на "что-то" а не на просто на серый фон.
Deka (2005-12-29 15:37:00) [6]Если прозрачность тени не интересует, то может быть совсем отказаться от рамки окна и отрисовать все его элементы самому? Хотя может быть и прозрачность тени получится. Надо пробовать. Возьми TImage и растяни его на всю площадь окна, а у окна отключи отрисовку бордюра. Может быть так? Система сама будет следить за тем, что под твоим окном.
Shuric (2005-12-29 15:17:00) [7]На ум приходит окошко логотипа Potoshop CS2. Пытаюсь реализовать что-то типа примитивной skin библиотеки для себя.
Существует формат PNG (и всякие 32 битмапы), который позволяет сохранять в себе 4-ю составляющую (RGBA), ну и соответственно изображение с тенью (за счет использования альфа канала), например в TImage, смотрится привлекательней. С конролами на форме я разобрался, т.к. можно получить изображение под ними и соответственно накладывая на полученное изображение картинку из PNG получаем, например кнопочку с 3d эффектом. Проблема собственно формой, т.к. получить снимок под ней у меня неполучается :(
Deka (2005-12-29 10:39:00) [8]Долго напрягал воображение в попытках предствать то о чем в [4] ты написал. Так и не смог представить. Может есть другое решение? То что должно получиться на экране описАть можешь? Если только бордюр мешает, так он вроде проще убирается.
Shuric (2005-12-28 21:39:00) [9]Имелось ввиду что на канву формы (типа не прямоугольная) накладывается изображение (ну не знаю как для [1] выразиться) под ней (под формой), и сверху в конву формы выводится рисунок с alpha каналом :) вот такая задачка. Зато не будет шерохотостей бордюра формы.
Prohodil Mimo (2005-12-28 21:00:00) [10]Deka © (28.12.05 17:35) [2]
И зачем тебе картинка "под формой"?
что бы наложить на форму :о)
Deka (2005-12-28 17:35:00) [11]Запомнить координаты формы, спрятать форму, вырезать кусок из DC(0), показать форму. И зачем тебе картинка "под формой"?
Anatoly Podgoretsky (2005-12-28 17:02:00) [12]Под формой нет изображения.