Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Фон картинки под цвет формы


Автор: RWander 15.7.2007, 22:31
Проблема в следующем: необходимо чтобы фон отображаемой картинки на форме был таким же цветом как и сама форма. В реалии фон картинки имеет белый цвет. спасибо!

Автор: Idsa 16.7.2007, 00:16
RWander, например, можно использовать png-картинки, предварительно выставив прозрачный цвет.

Автор: RWander 16.7.2007, 09:05
Код

pictureBox1.BackColor = System.Drawing.Color.Transparent;


не помагает.. пробавал и png- и bmp-изображения 

Автор: mr.DUDA 16.7.2007, 09:48
Отнаследоваться от PictureBox:
Код
public class PictureBox2 : PictureBox
{
        public PictureBox2()
        {
              SetStyle (ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint);
        }
}


И изменить тип контрола с PictureBox на PictureBox2. Должно помочь.

Автор: RWander 16.7.2007, 18:34
mr.DUDA, опять спасибо!!  smile 

Автор: RWander 16.7.2007, 19:25
Цитата(mr.DUDA @ 16.7.2007,  09:48)
Отнаследоваться от PictureBox:
Код
public class PictureBox2 : PictureBox
{
        public PictureBox2()
        {
              SetStyle (ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint);
        }
}


И изменить тип контрола с PictureBox на PictureBox2. Должно помочь.

Не помогло..

PS в SetStyle нужно еще указать второй параметр true, но все равно не работает  smile 

Автор: mr.DUDA 16.7.2007, 22:53
Ну как же, у меня вот работает..

Автор: RWander 17.7.2007, 18:55
странно, почему же у меня то не работает?? может это в версии framework дело? У меня сейчас 2 стоит.. 

Автор: mr.DUDA 18.7.2007, 09:35
Цитата(RWander @  17.7.2007,  18:55 Найти цитируемый пост)
странно, почему же у меня то не работает?? может это в версии framework дело? У меня сейчас 2 стоит.. 

Аналогично. Может установлены какие-то навороты типа window blinds, изменяющие стиль окошек ?

Добавлено через 3 минуты и 10 секунд
P.S. мой пример работает ?

Автор: RWander 18.7.2007, 14:36
mr.DUDA, что-то я немного не понимаю.. Как так, ваш пример работает. Но я не пойму, фон изображения ведь не белый, а при загрузки видно только сам глобус.. Я попробовал отредактировать изображение: сделал фон белым цветом, при этом цвет фона так и остался белым.. smile

Добавлено через 3 минуты и 4 секунды
Цитата(mr.DUDA @  18.7.2007,  09:35 Найти цитируемый пост)
Может установлены какие-то навороты типа window blinds, изменяющие стиль окошек ?


не, такого чуда не устанавлевал..

Автор: mr.DUDA 18.7.2007, 14:53
Цитата(RWander @  18.7.2007,  14:36 Найти цитируемый пост)
 я не пойму, фон изображения ведь не белый, а при загрузки видно только сам глобус.. Я попробовал отредактировать изображение: сделал фон белым цветом, при этом цвет фона так и остался белым.. 


Объясню свой пример, может укажет на источник проблемы:

- У формы, на которой лежит пикчербокс, красный бэкграунд
- У пикчербокса стоит Transparent бэкграунд (в свойствах), а чтобы он реально работал - мы создали унаследованный PictureBox2 с указанием стиля SupportsTransparentBackground
- Картинка должна иметь альфа-канал. Подойдёт PNG формат. Те пикселы, которые на картинке полностью прозрачные, будут прозрачными и на пикчербоксе, т.е. вместо них увидим фон формы.

Автор: RWander 18.7.2007, 18:40
Цитата(mr.DUDA @  18.7.2007,  14:53 Найти цитируемый пост)
 Картинка должна иметь альфа-канал.

вопрос немного не по теме: а как узнать альфа-канал данного изображения и как установить прозрачность отдельных пикселей? может c помощью  PhotoShop или как-то еще? Я думал будет достаточно просто сделать фон картинки белым.. (в Delphi работало по крайней мере)

Автор: RWander 18.7.2007, 19:04
разобрался..  smile 

mr.DUDA, спасибо!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)