Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/23: Рейтинг темы: голосов - 23, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 09.06.2011
Сообщений: 6
1

Затемнение картинки в picturebox-ах

17.06.2011, 12:45. Просмотров 4483. Ответов 12
Метки нет (Все метки)

Итак, имеется picturebox в который загружается картинка, суть проблемы в том, что при определенных условиях картинку необходимо затемнить. То есть изображение сохраняется, но цвета несколько тускнеют.

На примере: справа - оригинал (нормальные условия), слева - то что должно получиться (определенные условия)
0
Изображения
 
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2011, 12:45
Ответы с готовыми решениями:

Прозрачный фон у картинки на элементе PictureBox непрозрачен для другого PictureBox
Здравствуйте! Проблема состоит в следующем! У меня есть картинка .png с прозрачным фоном. При...

Имя картинки PictureBox
Здравствуйте, подскажите пожалуйста, как программно можно узнать имя загруженной в PictureBox...

Передвижение картинки по PictureBox
пробую работать с графикой. следующая задача: в picturebox поместил изображение- карта России....

Сохранение картинки из PictureBox
Здравствуйте,собственно сабж. Написал код,правда не знаю в чем ошибся,буду благодарен за помощь....

12
мастер топоров
900 / 725 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
17.06.2011, 13:05 2
поверх пикчербокса с картинкой ставите пикчербокс с белым заполнением и устанавливаете уровень прозрачности этого белого пикчербокса чуть больше, чем "совсем прозрачный"
0
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
17.06.2011, 13:11 3
Koran, вроде бы наоборот, затемнить надо.
0
мастер топоров
900 / 725 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
17.06.2011, 13:15 4
можно разместить белый пикчербокс под пикчербоксом с картинкой и делать полупрозрачным верзний пикчербокс - результат будет тот же
0
0 / 0 / 0
Регистрация: 09.06.2011
Сообщений: 6
17.06.2011, 13:25  [ТС] 5
Цитата Сообщение от Koran Посмотреть сообщение
можно разместить белый пикчербокс под пикчербоксом с картинкой и делать полупрозрачным верзний пикчербокс - результат будет тот же
тогда вопрос - зачем помещать белый? и собственно как эту полупрозрачность сделать?
0
604 / 528 / 114
Регистрация: 24.03.2011
Сообщений: 576
17.06.2011, 13:41 6
Koran, тогда лучше сделать так:
C#
1
2
3
4
5
     using (Graphics g = Graphics.FromImage(pictureBox1.Image))
     {
        SolidBrush Brush = new SolidBrush(Color.FromArgb(50, 0, 0, 0));
        g.FillRectangle(Brush, 0, 0, pictureBox1.Image.Width, pictureBox1.Image.Height);
     }
SeaKot, картинка затемниться.
0
0 / 0 / 0
Регистрация: 09.06.2011
Сообщений: 6
17.06.2011, 13:54  [ТС] 7
Цитата Сообщение от Redfex Посмотреть сообщение
C#
1
2
3
4
5
     using (Graphics g = Graphics.FromImage(pictureBox1.Image))
     {
        SolidBrush Brush = new SolidBrush(Color.FromArgb(50, 0, 0, 0));
        g.FillRectangle(Brush, 0, 0, pictureBox1.Image.Width, pictureBox1.Image.Height);
     }
A Graphics object cannot be created from an image that has an indexed pixel format.

Видимо с *.gif такое не прокатит. Но за идею спасибо, попробую.
0
мастер топоров
900 / 725 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
17.06.2011, 14:39 8
Redfex, "лучше" - не значит "хорошо". зачем танцы с бубном и рисовать ещё что-то без уверенности что это можно убрать если можно расположить объект/контрол и его модифицировать при каких-либо условиях? решений задачи может быть много, но лично я бы выбрал вариант с дополнительным пикчербоксом
0
604 / 528 / 114
Регистрация: 24.03.2011
Сообщений: 576
17.06.2011, 14:49 9
Koran, я бы выбрал свой вариант

SeaKot, можно рисовать затемнение еще так:
C#
1
2
3
4
5
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            SolidBrush Brush = new SolidBrush(Color.FromArgb(50, 0, 0, 0));
            e.Graphics.FillRectangle(Brush, 0, 0, pictureBox1.Width, pictureBox1.Height);
        }
1
59 / 59 / 13
Регистрация: 23.04.2011
Сообщений: 110
17.06.2011, 16:23 10
Цитата Сообщение от Redfex Посмотреть сообщение
можно рисовать затемнение еще так:
C#
1
2
3
4
5
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            SolidBrush Brush = new SolidBrush(Color.FromArgb(50, 0, 0, 0));
            e.Graphics.FillRectangle(Brush, 0, 0, pictureBox1.Width, pictureBox1.Height);
        }
хороший вариант
0
15 / 15 / 1
Регистрация: 08.06.2011
Сообщений: 34
17.06.2011, 16:53 11
Если картинка легкая - можно две картинки в памяти держать и загружать в бокс ту, которая нужна.
Это еще вариант, не такой конечно изящный...
0
0 / 0 / 1
Регистрация: 10.01.2010
Сообщений: 91
07.03.2014, 13:50 12
А как потом убрать это затемнение? Точнее этот ректенгл, когда мы уберём мышку с изображения?
0
Заблокирован
08.03.2014, 22:56 13
Насколько я помню гдето тут читал что чтобы осветлить картинку к ее цвету нужно прибавить несколько значений например было 176 120 145 сделать 186 120 145 - вам нужно проделать все на оборот.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2014, 22:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Изменение картинки в PictureBox
Всем привет! Работаю в Visual Studio 2015, требуется на одной форме при нажатии на кнопку сменить...

Редактирование картинки в PictureBox
Здравствуйте. Скажите пожалуйста, как добавить в форму такой контрол, как в картине. что бы...

Загрузка картинки в PictureBox
Помогите пожалуйста,как загрузить изображение в элемент PictureBox?

Смена картинки в PictureBox
Всем доброго времени. Знаю, что вопрос глупый и уже много раз встречался но что то сам решить не...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.