Есть проблема. Сделал с помощью свойства TransparencyKey часть формы прозрачной за счёт того что вставил своё изображение как BackgroundImage.
Сделал по нажатию, поднятию и перетаскиванию левой кнопки мыши по форме, перемещение формы, но вопрос:
Как сделать так, чтобы перетакскивать можно было лишь тогда, когда нажатие произошло над видимой частью формы? А потом как передать нажатие окнам, находящимся "под" данным?
Если кто сталкивался, подскажите выход, или направление(кроме google и MSDN ).
13 августа 2009 в 20:05
Создание сайтов, полное их продвижение, опытные специалисты!
//vkontakte.ru/club10929307
//license-soft.ru
САМЫЕ НИЗКИЕ ЦЕНЫ!
13 августа 2009 в 20:00
вобщем делаем пустую форму с FormBorderStyle none, форме даём к примеру белый цвет фона, добавляем к примеру Panel, вставляем в него пикчу на которой "то что нужно отрезать" белого цвета. Делаем для формы TrasparencyKey White.
А события перемещения делаем уже для Panel, но можно и как написал Антон RichDad Кононов обрабатывать событие WM_NCHITTEST, выглядеть это будет так
private const int WM_NCHITTEST = 0×84;
private const int HTCAPTION = 0×2;
protected override void WndProc(ref Message m)
{
if(m.Msg == WM_NCHITTEST)
m.Result = new IntPtr(HTCAPTION);
else
base.WndProc(ref m);
}
13 августа 2009 в 15:03
брутфорс немного) т.к. форма не прямоугольная, а вырезается оверлеем(уже жесть), то чтобы определить прозрачно сие место или нет, надо изобретать велосипед(например опять же сравнивать с цветом в TransparencyKey по нажатию мыши, и если да то попали в прозрачное).
нашёл на кодпрожэкт статью //www.codeproject.com/KB/GDI-plus/CsTranspTutor...
вроде то, но пока нету времени. Как изучу отпишусь, возможно кому-то поможет.
13 августа 2009 в 12:03
проще все
перехватываешь событие формы WM_NCHITTEST
заменяешь result (или как он там) с простой области на заголовок (см. справку и гугль). Примерно 1-2 строки кода чтобы окно перетаскивалось за любую область (разумеется компоненты не в счет).
13 августа 2009 в 12:02
так ИМХО будет более логичнее)))
13 августа 2009 в 11:02
чтобы заголовка не было выстаялял свойство FormBorderStylenone,
но если имеете ввиду сделать самому часть формы "заголовком" (например PictureBox добавить на форму) и таскать форму при нажатии по нему, я об этом тоже думал, спасибо.
13 августа 2009 в 10:00
перетаскивание у форм происходит при нажатии на заголовок, а не на площади всей формы
12 августа 2009 в 22:00
прикол а в дельфи и так работает. кидаешь картинку и все.