Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2011, 04:18   #1
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию как получить картинку из под окна?

Т.е. область, которую закрывает например форма или кнопка.
Как например сделано в висте (или где?):
заголовок формы полупрозрачный, а фон под ним размыт.

Извиняйте за коряво поставленый вопрос, других слов не подобрал,
надеюсь вы поняли что я имею в виду - как бы выглядела эта область, если б на ней не было формы (или кнопки, любого окна)
xrob вне форума Ответить с цитированием
Старый 01.12.2011, 09:32   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

врятли это можно на ХП, но нет ничего не возможного.
Делайте полупрозрачным верхнее окно, вот и всё.
Часть окна полупрозрачным ни как не сделать.
Человек_Борща вне форума Ответить с цитированием
Старый 01.12.2011, 12:11   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Часть окна полупрозрачной никак не сделать.
Если только "слепить" из нескольких "склееных" между собой форм. Тогда можно у каждой менять прозрачность.
mihali4 вне форума Ответить с цитированием
Старый 01.12.2011, 12:25   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Как например сделано в висте (или где?):
На Windows 7?
_________________
Цитата:
Часть окна полупрозрачным ни как не сделать.
Цитата:
Если только "слепить" из нескольких "склееных" между собой форм. Тогда можно у каждой менять прозрачность.
А работа с регионами? Я сам не знаю, но... вдруг...
Вадим Мошев вне форума Ответить с цитированием
Старый 01.12.2011, 15:12   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

mihali4
, это понятно что можно обьект окна зделать прозрачным.

ТС имеет ввиду, область чужого окна которую перекрывает самое верхнее окно в системе.

хатя по сути, получается квадрат или прямо угольник...
как-то так:

Если верхнее окно перкрывает облать нижнего, то там где, что-то было. Уже ничего нет. А при изменении размера окна верхнего(чтобы увидеть нижнее), нижнее окно перерисовывается и дорисовывает недостающую часть.

И тут 2 варианта:
1. на место закрашеное голубым, залепить равную по размерам панель, и делать её прозрачной. Но это скорее 1 к 99%, что то что под окном будет видимум. Т.к. оно замалёвано тем что на верху. И WM_PAINT не поступает. НО можно после установки панели на верхнее окно, послать нижнему WM_Paint и тогда наша панель отобразит ту часть, что была перекрыта верхней. Но увы 1 раз((отрисовали мы всего 1 раз =) ).

Ещё вариант, при перемещунии окна, делать его прозрачным.

В общем фантазия=)
Человек_Борща вне форума Ответить с цитированием
Старый 01.12.2011, 15:48   #6
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Если только "слепить" из нескольких "склееных" между собой форм. Тогда можно у каждой менять прозрачность.
А как можно "склеить" несколько форм, например 3, чтобы все они перетаскивались за главной формой?

Последний раз редактировалось mihali4; 02.12.2011 в 02:22.
werrey вне форума Ответить с цитированием
Старый 02.12.2011, 02:31   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну, например :
Код:
//в главной форме задаем
  private
    { Private declarations }
    procedure OnMove(var Msg: TWMMove); message WM_MOVE;
...
procedure Tfmain.OnMove(var Msg: TWMMove);
begin
//первые 2 условия для 2-х форм, одна из которых вспомогательная и показывается по запросу
//вспомогательная форма "перекидывается" и показывается либо слева от главной, либо справа
//если form2 у левого края экрана
if (form2.Left<0) then
form2.Left:=Left+Width+2 else
//если form2 у правого края экрана
if form2.Left+form2.Width>Screen.Width then
form2.Left:=Left-form2.Width-2 else
//если form2 далеко от краев и для универсального случая
begin
if form2.Left>Left+Width-20 then //поправка 20 подбирается - если нужен зазор между формами
form2.Left:=Left+Width+2 else
form2.Left:=Left-form2.Width-2;
end;
end;
Вертикальную проверку сами сделаете, если нужно...
Дополнительные формы тоже добавите по образцу form2.

Последний раз редактировалось mihali4; 02.12.2011 в 02:39.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить изображение с OpenGL окна? TwiX Общие вопросы Delphi 0 24.01.2011 22:07
Как получить картинку при наведении на другую картинку (ссылку) seeker1 JavaScript, Ajax 8 04.07.2010 19:42
Как на WinApi получить все дочерние окна приложения? Wadimka Работа с сетью в Delphi 8 27.05.2009 14:25
IE7. Как получить параметры окна confirm()? Doda Windows 1 24.04.2009 10:22
Как закрепить картинку относительно окна браузера? Svetix HTML и CSS 18 18.04.2009 23:12