Менять прозрачность картинки

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

percilacus
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 12.07.2009 (Вс) 18:13

Менять прозрачность картинки

Сообщение percilacus » 12.07.2009 (Вс) 18:22

Доброго времени суток!
Пусть имеется картинка на форме:
Код: Выделить всё
Dim Gr As Graphics = Me.CreateGraphics
Dim kartinka As New Bitmap("D:\docs\foto.jpg")
Gr.DrawImage(kartinka, 0, 0)

Спрашивается, как быстро одним оператором изменить прозрачность картинки?
Можно, конечно, перебирать пикселы этой картинки в цикле и менять там ARGB составляющие, но, во-первых, это гемор, во-вотрых, это долго
Зы: VB2005 .NET
перцилакус такой маленький а уже знает что такое хорошо а что такое плохо

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Менять прозрачность картинки

Сообщение MIT » 12.07.2009 (Вс) 19:12

http://dotnet-club.ru/viewtopic.php?f=9&t=52
Пункт "Установка общей прозрачности"
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

percilacus
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 12.07.2009 (Вс) 18:13

Re: Менять прозрачность картинки

Сообщение percilacus » 13.07.2009 (Пн) 18:08

MIT писал(а):http://dotnet-club.ru/viewtopic.php?f=9&t=52
Пункт "Установка общей прозрачности"

Я же сказал не перебирать пикселы в цикле, а то долго вычисляется.
Идея такова, чтобы при наведении мышкой на картинку ее прозрачность плавно увеличивалась от 50% до 100% примерно за 2 сек, а когда мышку прочь, то прозрачность снова плавно уменьшалась до 50% :wink:
перцилакус такой маленький а уже знает что такое хорошо а что такое плохо

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Менять прозрачность картинки

Сообщение MIT » 13.07.2009 (Пн) 18:28

Ты пробовал мой алгоритм? Я почти уверен, что написать быстрее не получиться. Если руки прямые, то там хоть 1000х1000 прозрачность в реалтайме меняй.

А без перебора пикселей (у меня, кстати, идет прямая работа с памятью, а не с пикселями) тебе не обойтись в любом случае, ибо кнопочки "шоб нажал и хотелка исполнилась" не существует.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Менять прозрачность картинки

Сообщение Joo » 13.07.2009 (Пн) 20:16

percilacus писал(а):
MIT писал(а):http://dotnet-club.ru/viewtopic.php?f=9&t=52
Пункт "Установка общей прозрачности"

Я же сказал не перебирать пикселы в цикле, а то долго вычисляется.
Идея такова, чтобы при наведении мышкой на картинку ее прозрачность плавно увеличивалась от 50% до 100% примерно за 2 сек, а когда мышку прочь, то прозрачность снова плавно уменьшалась до 50% :wink:


Ты проверь сначала!!! Не нравится? Я где-то я видел API AlphaBlend из "msimg32.dll"
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Менять прозрачность картинки

Сообщение MIT » 13.07.2009 (Пн) 21:05

percilacus писал(а):долго вычисляется

wa_transparent_sample.rar
Вот тебе долго. Смотри.
(11.83 Кб) Скачиваний: 97
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Re: Менять прозрачность картинки

Сообщение Ronin » 14.07.2009 (Вт) 14:24

OFFTopic: WPF рулит
С уважением,
Игорь Шувалов aka Ronin

percilacus
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 12.07.2009 (Вс) 18:13

Re: Менять прозрачность картинки

Сообщение percilacus » 14.07.2009 (Вт) 17:53

Ты проверь сначала!!! Не нравится? Я где-то я видел API AlphaBlend из "msimg32.dll"

Не нравится! И че??

percilacus
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 12.07.2009 (Вс) 18:13

Re: Менять прозрачность картинки

Сообщение percilacus » 14.07.2009 (Вт) 17:59

Сколько не рыл MSDN так и не нашел быстрого способа.
Видимо, на чистом VB так и придется перебирать пикселы, правильно сказал MIT

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Менять прозрачность картинки

Сообщение Joo » 14.07.2009 (Вт) 18:59

percilacus писал(а):
Ты проверь сначала!!! Не нравится? Я где-то я видел API AlphaBlend из "msimg32.dll"

Не нравится! И че??

Х... через плечо, извиняюсь перед администрацией, не сдержался! Гугли AlphaBlend

или

Код: Выделить всё
Dim cm as new ColorMatrix()
cm.Matrix33=(значение в пределах 0f - 1f)
Dim ia as ImageAttributes()
ia.SetColorMatrix(cm)
e.Graphics.DrawImage(imagea, бла-бла-бла)
e.Graphics.DrawImage(imageb,бла-бла-бла, ia) 'Используем ImageAttributes...
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 171

    TopList  
cron