Пиксели

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

Dimon16
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 30.12.2009 (Ср) 20:37

Пиксели

Сообщение Dimon16 » 10.05.2010 (Пн) 9:46

Привет!Кароче,есть пиксель,надо узнать сколько в нём R,G и B ? И как задать пикселю R,G и B ?
Заранее спасибо!

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

Re: Пиксели

Сообщение MIT » 10.05.2010 (Пн) 10:03

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

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Пиксели

Сообщение Денис » 10.05.2010 (Пн) 10:45

В общем, цвет передается длинным целым (Long), которое состоит из 4 байт:
Код: Выделить всё
A B G R
FAFAFAFA

Где А - альфаканал, B - blue, G - green, R - red. Обратить значение цвета в Hex, добавить недостающие регистры, распарсить, добавить нужные значения к каналам, я думаю труда не составит?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Пиксели

Сообщение Viper » 10.05.2010 (Пн) 22:53

Денис писал(а):В общем, цвет передается длинным целым (Long), которое состоит из 4 байт:
Код: Выделить всё
A B G R
FAFAFAFA

Где А - альфаканал, B - blue, G - green, R - red. Обратить значение цвета в Hex, добавить недостающие регистры, распарсить, добавить нужные значения к каналам, я думаю труда не составит?
Зачем такие сложности то? Структура Color уже имеет все нужные свойства - A, R, G И B.
Весь мир матрица, а мы в нем потоки байтов!

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

Re: Пиксели

Сообщение MIT » 11.05.2010 (Вт) 7:21

Viper, совершенно не факт, что у товарища его пиксель хранится в виде Color-переменной. Может у него однопиксельная картинка? А может как раз int-код цвета? А вдруг координата в графическом файле?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Пиксели

Сообщение Денис » 11.05.2010 (Вт) 7:42

Viper писал(а):Зачем такие сложности то?


Извиняюсь, с .Net знаком поверхностно, а с шарпом вообще не знаком, так что приходится советовать "дедовские" методы :)
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Dimon16
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 30.12.2009 (Ср) 20:37

Re: Пиксели

Сообщение Dimon16 » 11.05.2010 (Вт) 16:00

Пиксель такой - я получаю из файла значения R,G,B ,а потом биру
Код: Выделить всё
Color Cl = new Color();
R_Bitmap.SetPixel(ax, ay, Cl.R = PixColor[ax, ay].R && Cl.G = PixColor[ax, ay].G && Cl.B = PixColor[ax, ay].B);

и выдаёт ошибку;PixColor[,]-это моя структура где хранятся на [ax,ay] значения R,G,B.Как это сделать?
А как получить значения R,G,B пикселя?
Спасибо!

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

Re: Пиксели

Сообщение MIT » 11.05.2010 (Вт) 16:26

Это не форум телепатов, тексты ошибок тут не угадывают.
Хотя могу предположить, что тебя шлют лесом при попытке записи значения в ReadOnly-свойство. Да и вообще строчка
Dimon16 писал(а):
Код: Выделить всё
R_Bitmap.SetPixel(ax, ay, Cl.R = PixColor[ax, ay].R && Cl.G = PixColor[ax, ay].G && Cl.B = PixColor[ax, ay].B);
бредовая.
Надо сделать что-то типа
Код: Выделить всё
Color Cl = Color.FromArgb(255, PixColor[ax, ay].R, PixColor[ax, ay].G, PixColor[ax, ay].B);
а потом сувать Cl куда только душе угодно.
Или же упихать всё в одну строку на такой манер:
Код: Выделить всё
R_Bitmap.SetPixel(ax, ay, Color.FromArgb(255, PixColor[ax, ay].R, PixColor[ax, ay].G, PixColor[ax, ay].B));
не создавая отдельную переменную вообще.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Dimon16
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 30.12.2009 (Ср) 20:37

Re: Пиксели

Сообщение Dimon16 » 11.05.2010 (Вт) 17:30

Спасибо!Как узнать сколько в пикселе R,G,B,через getPixel?

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

Re: Пиксели

Сообщение MIT » 11.05.2010 (Вт) 17:36

GetPixel возвращает переменную типа Color, а
Viper писал(а):Структура Color уже имеет все нужные свойства - A, R, G И B.
Всё элементарно:
Код: Выделить всё
Color Cl = R_Bitmap.GetPixel(ax, ay);
MessageBox.Show(Cl.R.ToString());
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Dimon16
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 30.12.2009 (Ср) 20:37

Re: Пиксели

Сообщение Dimon16 » 30.05.2010 (Вс) 16:50

А можно как-нибудь узнать какой формат пикселей в изображении?


Вернуться в C#

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

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

    TopList