Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/64: Рейтинг темы: голосов - 64, средняя оценка - 4.63
4 / 4 / 2
Регистрация: 26.10.2014
Сообщений: 138

Как сделать фон pictureBox прозрачным

05.06.2015, 00:53. Показов 13214. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дело в том, что когда ставлю pictureBox1 и налаживаю на него pictureBox2 в который загружена картинка png, то почему-то в тех местах, где пусто, становится видно форму, а не ту картинку, которая была загружена в pictureBox1, как это можно исправить, и можно ли сделать так, что бы pictureBox приобрёл форму картинки, которая находится в формате png, т.е., что бы при клике по pictureBox, в которое загружена картинка с форматом png, не воспринимала клики мышки той области, где пусто (прозрачно)?
Миниатюры
Как сделать фон pictureBox прозрачным  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.06.2015, 00:53
Ответы с готовыми решениями:

Как сделать прозрачным фон в PictureBox
Понимаю что этот вопрос наверное не раз поднимался на этом форуме, но все же. Я собираюсь грузить по нажатию на кнопку какое-то изображение...

Как сделать прозрачным фон pictureBox?
Как сделать прозрачным фон pictureBox? Только не белый, а именно прозрачный.

Как сделать фон pictureBox прозрачным?
Есть основной pictureBox, в котором храниться изображение. Есть еще один, который размещается поверх основного. В него тоже загрузил...

9
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
05.06.2015, 18:06
daniel_kobica, Контролы WinForms фактически не поддерживают прозрачность.
Вам нужно убрать второй пикчербокс (а я бы и первый убрал), а картинку рисовать поверх первого в событии pictureBox1.Paint.
0
4 / 4 / 2
Регистрация: 26.10.2014
Сообщений: 138
05.06.2015, 19:20  [ТС]
А можно по-подробнее, как это рисовать?
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
05.06.2015, 20:01
Лучший ответ Сообщение было отмечено daniel_kobica как решение

Решение

daniel_kobica,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Drawing;
using System.Net;
using System.Windows.Forms;
 
namespace WindowsFormsApplication295
{
    public partial class Form1 : Form
    {
        private Image img1;
        private Image img2;
 
        public Form1()
        {
            InitializeComponent();
 
            img1 = Image.FromStream(new WebClient().OpenRead(@"http://upload.wikimedia.org/wikipedia/commons/c/cc/Odessa_oblast'_field.jpg"));
            img2 = Image.FromStream(new WebClient().OpenRead(@"https://40.media.tumblr.com/tumblr_mdwufgcDzC1rdi5keo1_500.png"));
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.DrawImage(img1, Point.Empty);
            e.Graphics.DrawImage(img2, 50, 350);
        }
    }
}
1
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
05.06.2015, 21:59
Цитата Сообщение от daniel_kobica Посмотреть сообщение
как это можно исправить
Правильно определить их родительско-дочерние "отношения"

C#
1
Picturebox2.Parent = PictureBox1;
Вычисление координат будет происходить относительно первого контейнера, а уже не формы.

Цитата Сообщение от daniel_kobica Посмотреть сообщение
не воспринимала клики мышки той области, где пусто (прозрачно)
События мыши распространяются на компонент, а не на какую-то область картинки. Поэтому как есть - никак.

Можно частично выкрутиться, обрезав PictureBox с помощью Regions
Кода нет, скажу сразу. На шарпе не пишу, просто поясняю суть
2
4 / 4 / 2
Регистрация: 26.10.2014
Сообщений: 138
06.06.2015, 01:00  [ТС]
Спасибо большое!

Добавлено через 33 секунды
Спасибо, тоже не плохо
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
06.06.2015, 10:07
Цитата Сообщение от Памирыч Посмотреть сообщение
Правильно определить их родительско-дочерние "отношения"
Хочу сделать небольшую ремарку, почему этот метод не будет работать.
Дело в том, что по факту контролы в winForms не имеют прозрачности. Они ее имитируют. Если поставить цвет фона Transparent, то контрол не становится прозрачным, а он просто берет фон своего Parent и прорисовывает как свой фон.
Это работает, но до тех пор пока контролы не начинают накладываться друг на друга. Если разместить на форме два пересекающихся пикчербокса то они оба будут прорисовывать фон Parnet, но они не будут "видеть" друг друга. Поэтому как не меняй парента, такие артефакты будут всегда, если число контролов больше одного и они могут пересекаться.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
06.06.2015, 10:15
Вот иллюстрация.
Первый скриншот, если делать отрисовку в OnPaint, воторой скриншот - если наложить два пикчербокса с фоном Transparent:



1
06.06.2015, 12:08

Не по теме:

Storm23, да я как бы в курсе, если Вы это мне)
Я предложил альтернативу и ответил на вопрос ТС. Иногда этого хватает за глаза

0
0 / 0 / 0
Регистрация: 06.09.2015
Сообщений: 8
18.09.2015, 17:38
День добрый. А как это можно реализовать в цикле(что бы n кошек было)? У меня что то не получается.
Цитата Сообщение от Storm23 Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Drawing;
using System.Net;
using System.Windows.Forms;
namespace WindowsFormsApplication295
{
    public partial class Form1 : Form
    {
        private Image img1;
        private Image img2;
public Form1()
        {
            InitializeComponent();
img1 = Image.FromStream(new WebClient().OpenRead(@"http://upload.wikimedia.org/wikipedia/commons/c/cc/Odessa_oblast'_field.jpg"));
            img2 = Image.FromStream(new WebClient().OpenRead(@"https://40.media.tumblr.com/tumblr_mdwufgcDzC1rdi5keo1_500.png"));
        }
protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.DrawImage(img1, Point.Empty);
            e.Graphics.DrawImage(img2, 50, 350);
        }
    }
}
Добавлено через 44 минуты
В цикле при нажатии на button
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2015, 17:38
Помогаю со студенческими работами здесь

Как сделать прозрачным фон картинки, загруженной в форму через pictureBox?
Как сделать прозрачным фон картинки, загруженной в форму через pictureBox? Дабы не было подобной красоты

Сделать фон PictureBox прозрачным
Как сделать так, чтобы белый фон был прозрачным в пикчур боксе? Пример: Надо наложить картинку поверх видео, но когда я использую...

Сделать фон PictureBox прозрачным
Всем привет. У меня такая проблема. Как сделать чтобы в picturebox не отображались уголки.

Как сделать фон Label прозрачным?
Подскажите пожалуйста как мне сделать label1 background прозрачным?

Как сделать фон прозрачным в label
Вот допустим я помещаю картинку вместо фона программы, и помещаю туда label. Как можно сделать так что бы фон labrl был прозрачным? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru