Graphics & TransparencyKey

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

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

PUNK-GRUNGER
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 10.06.2004 (Чт) 14:22
Откуда: Украина, Николаев

Graphics & TransparencyKey

Сообщение PUNK-GRUNGER » 17.10.2005 (Пн) 15:09

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

Надеюсь я объяснил нормально :)

Конкретнее: есть пикчура-эмблема и ее нужно перерисовать, ну скажем на рабочий стол. Помогите )) !

PUNK-GRUNGER
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 10.06.2004 (Чт) 14:22
Откуда: Украина, Николаев

Сообщение PUNK-GRUNGER » 17.10.2005 (Пн) 15:12

Перековырял весь Graphics.DrawImage - все тридцать функций, ничего не нашел. Думаю, что ответ находиться где-то в конструкции ImageAttribut, но так и не понял что там и как.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 17.10.2005 (Пн) 16:55

Посмотри объект Bitmap и его метод MakeTransparent.

http://msdn.microsoft.com/library/defau ... ttopic.asp
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.10.2005 (Пн) 17:30

Rainbow писал(а):Посмотри объект Bitmap и его метод MakeTransparent.

http://msdn.microsoft.com/library/defau ... ttopic.asp

Имхо мимо.

Нужно смотреть, действительно, в сторону Graphics::DrawImage(Image, Point(), Rectangle, GraphicsUnit, ImageAttributes) и соответственно ImageAttributes::SetColorKey(Color, Color)
Это задаёт как раз настройку прозрачности для одной операции наложения, а не для всей картинки.
Изображение

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 17.10.2005 (Пн) 18:18

Ну, хм... Может, я задачу неправильно поняла. Я имела в виду вот это (код повешен на кнопку в фроме; по клику на форме в верхнем левом углу отображается скомбинированный image):
Код: Выделить всё
        Dim bmp1 As New Bitmap(Application.StartupPath & "\Background.bmp")
        Dim bmp2 As New Bitmap(Application.StartupPath & "\Overlay.bmp")

        Dim g As Graphics = Graphics.FromImage(bmp1)
        bmp2.MakeTransparent(Color.White)
        g.DrawImage(bmp2, 0, 0)
        g.Dispose()

        Dim fg As Graphics = Me.CreateGraphics()
        fg.DrawImage(bmp1, 0, 0)
        fg.Dispose()
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.10.2005 (Пн) 19:44

Rainbow, работает-то оно как надо, просто при этом меняется содержимое оверлея.

Ещё раз, твой способ задаёт прозрачность для картики целиком, а мой - только для операции наложения.
Изображение

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 18.10.2005 (Вт) 10:30

Угу. То есть, если не хочется портить объект, то надо пользоваться ImageAttributes. Прониклась. Спасибо :)
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

PUNK-GRUNGER
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 10.06.2004 (Чт) 14:22
Откуда: Украина, Николаев

Сообщение PUNK-GRUNGER » 18.10.2005 (Вт) 14:47

Ой пасиба ))


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

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

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

    TopList