Вопрос по Transparent Picturebox

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

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

Serge200803141927
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 14.03.2008 (Пт) 19:30

Вопрос по Transparent Picturebox

Сообщение Serge200803141927 » 23.01.2009 (Пт) 1:22

Hi.

Нужно сделать так, чтобы на одном Picturebox'е , располагался еще один с прозрачностью.
Известно, что стандартно Picturebox может быть прозрачен только по отношению к своему родителю.
Но как это обеспечить, если нужно разместить десяток картинок или если картинки двигаются.
Порывшись в инете, я нашел и дописал пример. Однако, он не правильно работает.
Где глюк - не пойму.
Может гуру посмотрят и подскажут?
See attachment
Вложения
WindowsApplication1.rar
(61.51 Кб) Скачиваний: 60

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Re: Вопрос по Transparent Picturebox

Сообщение Metallikus » 23.01.2009 (Пт) 2:33

Вместо Pictureboxов используй лучше DrawImage()
Много здесь таких как я, кто в инете через GPRS?

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Re: Вопрос по Transparent Picturebox

Сообщение Metallikus » 23.01.2009 (Пт) 4:57

А PictureboxX.BackColor = Color.Transparent() не пашет разве? Просто у мя твой проект не открылся (у мя VS 2005, а у тя 2008 :( ). Но в любом случае, лучше работать с DrawImage - там где тебе надо эту твою анимацию сделать пишешь:
Dim bmp As New Bitmap(PictureboxX.Width, PictureboxX.Height)
Dim g As Graphics = Graphics.FromImage(bmp)
g.DrawImage(Image.FromFile("Файл1"), х1, у1, Ширина1, Высота1)
g.DrawImage(Image.FromFile("Файл2"), х2, у2, Ширина2, Высота2)
g.DrawImage(Image.FromFile("Файл3"), х3, у3, Ширина3, Высота3)
g.Dispose()
PictureboxX.BackgroundImage = bmp
Много здесь таких как я, кто в инете через GPRS?

Serge200803141927
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 14.03.2008 (Пт) 19:30

Re: Вопрос по Transparent Picturebox

Сообщение Serge200803141927 » 23.01.2009 (Пт) 16:44

PictureboxX.BackColor = Color.Transparent() будет прозрачным только для своего родителя, а меня у всех один родитель - форма.
Да я и пользуюсь DrawImage. Даже круче делаю - с SetColorKey, чтобы цвета по маске отсекать, а все равно не пашет.
По поводу 2008: вообще говоря там всего 2 текстовых файла нужно для работы - описание формы Form1.Designer.vb и код Form1.vb.
Они, я думаю, без проблем в 2005 встанут (New Project, Add existing file to project...)

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Re: Вопрос по Transparent Picturebox

Сообщение Metallikus » 24.01.2009 (Сб) 2:00

Serge200803141927 писал(а):Да я и пользуюсь DrawImage

False
Если бы ты пользовался DrawImage(), то тебе бы больше одного Picturebox тебе не понадобится (или Form1, тогда просто задавай Х и У в соответствии Picturebox-ам)
Много здесь таких как я, кто в инете через GPRS?

Serge200803141927
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 14.03.2008 (Пт) 19:30

Re: Вопрос по Transparent Picturebox

Сообщение Serge200803141927 » 26.01.2009 (Пн) 17:49

True
>>>Если бы ты пользовался DrawImage()...
Я пользуюсь DrawImage.
Для того, чтобы в этом убедиться, достаточно открыть файл Form1.vb в программе Notepad.exe
Другое дело, что я пользуюсь им в переопределенном методе OnPaint.
По-другому, думаю, нельзя. Мне нужно рисовать в контроле, т.к. мне нужны от него события (OnMouseDown, например)
Конечно, можно было бы:
bmp=New Bitmap
bmp.MakeTransparent
DrawImage(bmp....)
Но мне нужно создать контрол!
Может кто-то подскажет хотя-бы направление...
Можно без создания контрола обойтись или создавать какой-либо другой контрол?
Условие одно - мне нужно ловить события OnMouseDown, OnMouseUp

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

Re: Вопрос по Transparent Picturebox

Сообщение MIT » 26.01.2009 (Пн) 18:27

Serge200803141927 писал(а):Может кто-то подскажет хотя-бы направление
Могу. :arrow: Codeproject.com. Там был пример, я видел. Статья называется "How to Use Transparent Images and Labels in Windows Forms", там все разжевано. И с исходниками.

2Metallikus:
Metallikus писал(а):Много здесь таких как я, кто в инете через GPRS?
На счет количества не скажу, но моя подпись говорит сама за себя.

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


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

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

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

    TopList