Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать градиентную прзрачность 
:(
    Опции темы
Empirik
Дата 24.11.2005, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 28.10.2005
Где: Россия, Пермь

Репутация: нет
Всего: 1



Я обскал MSDN и нашел два случая: как поменять прозрачность всей формы целиком, и как сделать куску формы абсолютно прозрачными. Но мне нужно сделать форму которая в некоторых областях была бы прозрачна, а в некоторых нет. Если у кого-то есть примеры как этого добиться то выложите пожалуйста. За ранее большое спасибо smile
--------------------
Постоянно удивляюсь человеческой фантазии напридумывают гаджетов
PM MAIL WWW ICQ   Вверх
Гость_Папа
Дата 24.11.2005, 12:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Приветствую.
Это не я придумал, но вроде работает.
Делает форму прозрачной, а не элемент на форме.
Код


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.Visible = False   ' форма не видима, одна картинка в пикчербоксе
        PictureBox1.Top = 0
        PictureBox1.Left = 0
        PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
        PictureBox1.Image = (Image.FromFile("genie.bmp"))

        Me.BackColor = Color.Magenta               'если указать одинаково свойство magenta в BackColor и в TransparencyKey то
        Me.TransparencyKey = Color.Magenta    'фон формы делается  прозрачным
        Me.FormBorderStyle = FormBorderStyle.None  ' в этом случае не отображается тительбалк и границы формы.

        Me.Visible = True
    End Sub



Здесь в форме установлена картинка, она и отображается при загрузке формы.Сама форма нет.
Поэксперементируй. И все получиться.

Удачи во всем.
  Вверх
Гость_Папа
Дата 24.11.2005, 12:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код VB.NET
  Вверх
arilou
Дата 24.11.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: нет
Всего: 61



Empirik
Если я не ошибаюсь, это называется alpha blending. Попробуй в эту сторону покопать. Можно еще посмотреть http://msdn.microsoft.com/library/default....adientbrush.asp


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 26.11.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Всё правильно пишет Empirik.

Можно сделать всю форму полупрозрачной, тогда все контролы будут с одинаковой прозрачностью, безразлично от того, какой у каждого контрола BackColor-полупрозрачный или нет.

Можно для формы задать ключевой цвет, по которому из формы будут "вырезаны" фрагменты.

Это касаемо того, чего можно добиться стандартными средствами smile

Теперь о нестандартных. В первую очередь в голову приходит следующее: перекрыть метод OnPaint, в котором отрисовывать всю форму самостоятельно. Других вариантов, вроде бы, нет...


--------------------
user posted image
PM MAIL WWW   Вверх
arilou
Дата 28.11.2005, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: нет
Всего: 61



mr.DUDA
Попробуй в XP'шке передвигать иконки на десктопе и ты заметишь, что они становятся "градиентно-прозрачными", т.е. к центру иконка менее прозрачна чем по краям.

Именно это я имел ввиду.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 28.11.2005, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Цитата(arilou @ 28.11.2005, 12:31)
Попробуй в XP'шке передвигать иконки на десктопе и ты заметишь, что они становятся "градиентно-прозрачными", т.е. к центру иконка менее прозрачна чем по краям.

Ничего подобного не заметил smile
Может, ты имел в виду Longhorn ?


--------------------
user posted image
PM MAIL WWW   Вверх
arilou
Дата 29.11.2005, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: нет
Всего: 61



Цитата(mr @ 28.11.2005, 18:24)
Ничего подобного не заметил

У тебя скины включены?


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 29.11.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Выключены.
Оффтопим !


--------------------
user posted image
PM MAIL WWW   Вверх
Guest
Дата 30.11.2005, 12:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(arilou @ 24.11.2005, 15:32)
Empirik
Если я не ошибаюсь, это называется alpha blending. Попробуй в эту сторону покопать. Можно еще посмотреть http://msdn.microsoft.com/library/default....adientbrush.asp

В общем проблему решил следующим образом: написал новый велосипед. Реализовал GUI при помощи DirectX и остановился на этом.
Будет время опробую гредиентные кисти, но не уверен чо они помогут. Всем спасибо
  Вверх
Empirik
Дата 30.11.2005, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 28.10.2005
Где: Россия, Пермь

Репутация: нет
Всего: 1



Цитата(Guest @ 30.11.2005, 12:53)
Цитата(arilou @ 24.11.2005, 15:32)
Empirik
Если я не ошибаюсь, это называется alpha blending. Попробуй в эту сторону покопать. Можно еще посмотреть http://msdn.microsoft.com/library/default....adientbrush.asp

В общем проблему решил следующим образом: написал новый велосипед. Реализовал GUI при помощи DirectX и остановился на этом.
Будет время опробую гредиентные кисти, но не уверен чо они помогут. Всем спасибо

Этот пост мой
--------------------
Постоянно удивляюсь человеческой фантазии напридумывают гаджетов
PM MAIL WWW ICQ   Вверх
Elfet
Дата 6.3.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Цитата(mr.DUDA @  26.11.2005,  19:33 Найти цитируемый пост)
перекрыть метод OnPaint, в котором отрисовывать всю форму самостоятельно.

Так тоже не выходит smile 
Код

        protected override void OnPaint(PaintEventArgs pevent)
        {
            // Getting the graphics object
            Graphics g = pevent.Graphics;

            // Creating the rectangle for the gradient
            Rectangle background = new Rectangle(0, 0,
                                      this.Width, this.Height);

            // Creating the lineargradient
            LinearGradientBrush brushGradient = new LinearGradientBrush(background,
                                                  Color.Green, Color.FromArgb(5,132,43,54), 0f);

            // Draw the gradient onto the form
            g.FillRectangle(brushGradient, background);

            // Disposing of the resources held by the brush
            brushGradient.Dispose();
        }



--------------------
PM MAIL WWW Skype   Вверх
arilou
Дата 6.3.2007, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: нет
Всего: 61



Elfet, в конструкторе формы надо выставить стили UserPaint, AllPaintingInWmPaint, OptimizedDoubleBuffer - не забыл?


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Elfet
Дата 6.3.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



arilou, 
Код

        public Form1()
        {
            SetStyle(ControlStyles.UserPaint, true);
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
            InitializeComponent();
        }

Так вот? Но ничего не помогает.
Пробовал ещё добавить SetStyle(ControlStyles.SupportsTransparentBackColor, true) - тоже ничего  smile 


--------------------
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.