Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# Windows Forms

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.76
QwertyX
XpressMusicMan Музыка24/7
43 / 32 / 2
Регистрация: 27.08.2010
Сообщений: 346
#1

Как сделать прозрачным окно, если оно - дочернее - C#

12.04.2011, 20:10. Просмотров 4674. Ответов 31
Метки нет (Все метки)

Всем еще раз привет

На этот раз позарез нужна прозрачная форма!
Пере искал много чего...
Но почти все полагается на TransparecyKey, а он как назло оказывается не работает когда делаю окно дочерным(родитель - десктоп), не просто не работает, а вообще не отображается, хоть и работает(то есть выкидывает по таймерам все месседж боксы и тд...). Говорят что в ХР все работает, но у меня в Вин7 почему то не хочет
В инете поискав наткнулся на МСДН, там сообщали что с TransparecyKey может быть баг, если глубина цвета выше 24битов... Я опустил свой экран до 16бит и не какого результата, хотя на этот раз форма появилась...

В общем нужен рабочий метод, чтобы форма была прозрачной а контролы- нет...
Может как нибудь прорисовать? Я с этим сильно не дружил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2011, 20:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать прозрачным окно, если оно - дочернее (C#):

Как исправить: дочернее окно поверх родительского? - C#
Кнопка на главной форме вызывает второе окно (FullScreenForm) вот так FullScreenForm fullForm = new FullScreenForm(); fullForm.Owner...

Как развернуть дочернее окно на всю область родительского - C#
Программа использует mdi окна. Есть главное окно программы GeneralForm; Есть дочернее окно ParentForm; У дочернего окна свойства...

Как отслеживать открыто ли какое либо дочернее окно MDI и как к ним обращаться? - C#
Как отслеживать открыто ли какое либо дочернее окно MDI и как к ним обращаться? и в нете никак не могу найти ответа на этот вопрос, может...

Дочернее окно - C#
Подскажите, плиз, как сделать так чтобы дочернее окно могло перемещаться только внутри родительского...

Как сделать прозрачным фон pictureBox? - C#
Как сделать прозрачным фон pictureBox? Только не белый, а именно прозрачный.

Как сделать прозрачным фон в PictureBox - C#
Понимаю что этот вопрос наверное не раз поднимался на этом форуме, но все же. Я собираюсь грузить по нажатию на кнопку какое-то изображение...

31
QwertyX
XpressMusicMan Музыка24/7
43 / 32 / 2
Регистрация: 27.08.2010
Сообщений: 346
12.04.2011, 22:43  [ТС] #16
Об этом я думаю каждый раз когда сталкиваюсь с проблемой прозрачности
Вот только не видел толковых примеров Может не по феньшую искал?
А то обычно если не слишком странно то чего желаю достигнуть - обычно нахожу...

П.С.
А для всех моих странностей - есть любимый форум
0
ValeryS
Модератор
6749 / 5158 / 493
Регистрация: 14.02.2011
Сообщений: 17,329
12.04.2011, 23:04 #17
Я шарп не очень хорошо знаю в основном балуюсь
но чтобы сделать окно(форму) поверх всех окон достаточно сделать TopMost true
и не надо привязыватся к десктопу
или вы о другом??
1
QwertyX
XpressMusicMan Музыка24/7
43 / 32 / 2
Регистрация: 27.08.2010
Сообщений: 346
12.04.2011, 23:05  [ТС] #18
Кстати, нашел что то другое
До этого пару раз натыкался, но не смог разобраться... Может у тебя выйдет:
http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx

А вот что то новое... Сейчас сам посмотрю... Вроде то что мне надо, но выглядит устрашающе большой работой Но если будет работать - не проблема
http://www.codeproject.com/KB/miscctrl/AlphaForm.aspx
Демка выглядит впечатляюще!
0
Leax
180 / 179 / 4
Регистрация: 07.11.2010
Сообщений: 477
12.04.2011, 23:15 #19
QwertyX, вот нашел для размышления
Как на C# сделать скриншот десктопа и получить объект Bitmap или Image?
Во втором фрэймворке есть метод Graphics.CopyFromScreen. С ним код будет такой:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static Bitmap PrintScreen(Screen screen)
{
    Rectangle rect = screen.Bounds;
 
    Bitmap bitmap = new Bitmap(
        rect.Width, rect.Height);
 
    using (Graphics bmpGraphics = Graphics.FromImage(bitmap))
        bmpGraphics.CopyFromScreen(rect.X, rect.Y, 0, 0,
            new Size(rect.Width, rect.Height));
 
    return bitmap;
}    
 
...
 
foreach (Screen screen in Screen.AllScreens)
{
    Bitmap bitmap = PrintScreen(screen);
    ...
}
1
QwertyX
XpressMusicMan Музыка24/7
43 / 32 / 2
Регистрация: 27.08.2010
Сообщений: 346
12.04.2011, 23:24  [ТС] #20
Цитата Сообщение от ValeryS Посмотреть сообщение
Я шарп не очень хорошо знаю в основном балуюсь
но чтобы сделать окно(форму) поверх всех окон достаточно сделать TopMost true
и не надо привязыватся к десктопу
или вы о другом??
Мы как раз про обратное ))
Мы о несуществующей "BottomMost"

Добавлено через 4 минуты
Цитата Сообщение от Leax Посмотреть сообщение
QwertyX, вот нашел для размышления
Благодарю!
Если не смогу разобраться тут с тем что нашел - обязательно воспользуюсь
Тут и в правду неплохо он все сделал... только бы понять как ))
0
ValeryS
Модератор
6749 / 5158 / 493
Регистрация: 14.02.2011
Сообщений: 17,329
13.04.2011, 20:34 #21
Написал программку птичка летает по экрану
состоит из двух форм одна главная в ней вся работа имеет размер (0,0)
вторая и летает по экрану
Посмотри может это тебе и надо???
программа сырая много недоделок но идея надеюсь будет понятна.
2
Вложения
Тип файла: rar bird.rar (44.4 Кб, 89 просмотров)
ailia
28 / 27 / 1
Регистрация: 27.12.2009
Сообщений: 106
13.04.2011, 21:01 #22
Может фоном будет прозрачная картинка? Такая прикреплена к этому сообщению. Ее размер 1х1 поэтому ее надо замостить.

P.S. Студия заглючила, поэтому проверить не могу
0
Вложения
Тип файла: rar fon.rar (114 байт, 27 просмотров)
QwertyX
XpressMusicMan Музыка24/7
43 / 32 / 2
Регистрация: 27.08.2010
Сообщений: 346
13.04.2011, 21:15  [ТС] #23
Цитата Сообщение от ValeryS Посмотреть сообщение
Написал программку птичка летает по экрану
Птичко понравилась
В код сейчас залезть не могу Но как только смогу - просмотрю, возможно как раз то что надо

Цитата Сообщение от ailia Посмотреть сообщение
Может фоном будет прозрачная картинка?
Пробовал уже, не вышло
0
ailia
28 / 27 / 1
Регистрация: 27.12.2009
Сообщений: 106
13.04.2011, 21:20 #24
Как вариант, форма становится невидимой, делает скриншот экрана, обрезает и задает его как свой фон
0
ValeryS
Модератор
6749 / 5158 / 493
Регистрация: 14.02.2011
Сообщений: 17,329
13.04.2011, 21:37 #25
там основная работа в таймере первой формы
расчет координат для 2 формы и какую картинку поставить(во 2 форму)
а вторая форма задан
this.TransparencyKey = System.Drawing.Color.Red;
this.BackColor = System.Drawing.Color.Red;
(по правильному надо брать первый пиксел картинки и его выставлять в прозрачный,но я не так хорошо знаю шарп)
BackgroundImage(который меняется в таймере)
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
(чтоб небыло границ окна и заголовка)
и
this.TopMost = true;
(чтобы летала поверх всех окон)
а 1 форму я сделал размером 0,0
и она никогда не появится на экране(по моему в этом у тебя была проблемма)

Добавлено через 1 минуту
пробовал создать из трех форм
1 основная
2,3 фазы птички
и делал попеременно видимой 2 и 3 форму
все летает но бывают поморгушки

Добавлено через 1 минуту
Цитата Сообщение от ailia Посмотреть сообщение
Как вариант, форма становится невидимой, делает скриншот экрана, обрезает и задает его как свой фон
а до иконок на рабочем столе можно будет достучатся???
0
ailia
28 / 27 / 1
Регистрация: 27.12.2009
Сообщений: 106
13.04.2011, 21:39 #26
Цитата Сообщение от ValeryS Посмотреть сообщение
[size="1"]а до иконок на рабочем столе можно будет достучатся???
нет, конечно
0
ValeryS
Модератор
6749 / 5158 / 493
Регистрация: 14.02.2011
Сообщений: 17,329
13.04.2011, 21:44 #27
Лет десять назад была такая программа Барашки ходили по экрану
Но если было открыто какое либо окно(не на весь экран) они забирались на верх окна падали от туда...
вот интересно как это было сделано???
мониторить открытые окна(по таймеру? хуками?) и координировать координаты(смешно) картинки?
какие ресурсы должны забираться ? а работало на первых пнях и на 98 винде
0
QwertyX
XpressMusicMan Музыка24/7
43 / 32 / 2
Регистрация: 27.08.2010
Сообщений: 346
13.04.2011, 22:02  [ТС] #28
Во первых хочу сказать что рад такой заинтересованностью темой

Во вторых насчет этого:
Цитата Сообщение от ValeryS Посмотреть сообщение
this.TransparencyKey = System.Drawing.Color.Red;
this.BackColor = System.Drawing.Color.Red;
(по правильному надо брать первый пиксел картинки и его выставлять в прозрачный,но я не так хорошо знаю шарп)
BackgroundImage(который меняется в таймере)
Тут то весь прикол в том что транспереси кей работает коряво(углы квадратизирует ), и говорят что этот баг фикситься тем о чем ты говорил, может так и есть, но когда я это проверял, я проверял как раз надеясь на то, что этот метод починит мою проблему с не рабочим ТранспересиКей, когда окно дочернее от десктопа...
И этот метод не помог


Цитата Сообщение от ailia Посмотреть сообщение
Как вариант, форма становится невидимой, делает скриншот экрана, обрезает и задает его как свой фон
Внимательней читаем 2-ую странницу

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
Лет десять назад была такая программа Барашки ходили по экрану
Но если было открыто какое либо окно(не на весь экран) они забирались на верх окна падали от туда...
вот интересно как это было сделано???
мониторить открытые окна(по таймеру? хуками?) и координировать координаты(смешно) картинки?
какие ресурсы должны забираться ? а работало на первых пнях и на 98 винде
ОЧЕНЬ заинтересован!
Есть шанс что откопаешь программку?
Прям даже можно будет попробовать реализовать на Шарпе, и выложить на хабре Там такие чтучки любят
0
ValeryS
Модератор
6749 / 5158 / 493
Регистрация: 14.02.2011
Сообщений: 17,329
13.04.2011, 22:14 #29
птичку видел? вроде не квадратизирует
а если и квадратизирует(идеально вырезать да при большой скорости обработки )
на глаз незаметно
Может у тебя из за десктопа проблеммы?
я то с ним незаморачивался

Добавлено через 2 минуты
Есть шанс что откопаешь программку?
маловероятно

Добавлено через 3 минуты
Не смотри нашел Гугла рулит
http://ruris.narod.ru/pricol.html

Добавлено через 2 минуты
но судя по всему там не регионы
быстро измени окно заметно сразу
фотографирует десктоп и на нем рисует
0
QwertyX
XpressMusicMan Музыка24/7
43 / 32 / 2
Регистрация: 27.08.2010
Сообщений: 346
13.04.2011, 22:21  [ТС] #30
Цитата Сообщение от ValeryS Посмотреть сообщение
птичку видел? вроде не квадратизирует
а если и квадратизирует(идеально вырезать да при большой скорости обработки )
на глаз незаметно
Дык у меня как раз на 1-ом месте стоит красавец тамагоча

БЛИН!
Чертов х64 Хотя нет... х64 хороший
Вот только как назло на нем часто программки не запустить
... И как назло на виртуалке слетела ХР... Я случайно файл хард диска удалил
0
13.04.2011, 22:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2011, 22:21
Привет! Вот еще темы с ответами:

.NET 4.x Как сделать кнопку с прозрачным фоном - C#
Привет! Вот хочу у вас спросить как сделать прозрачную кнопку! Например: Вставить Изображение(На кнопку)(Button) И внизу написать...

Как сделать фон pictureBox прозрачным - C#
Дело в том, что когда ставлю pictureBox1 и налаживаю на него pictureBox2 в который загружена картинка png, то почему-то в тех местах, где...

Как сделать фон pictureBox прозрачным? - C#
Есть основной pictureBox, в котором храниться изображение. Есть еще один, который размещается поверх основного. В него тоже загрузил...

Как сделать фон Label прозрачным? - C#
Подскажите пожалуйста как мне сделать label1 background прозрачным?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.