Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2011, 12:38   #1
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

На форме есть 2 picture box, и 1 listview

Необходимо вывести в листвиев координаты пикселя 1 изображения(picturebox1) и его цвет(0,0,Color)

Второе изображение получить на основании сведений из листвиев

Вот функция

Код:
        private void Form1_Load(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            Rectangle scan_rect = new Rectangle(new Point(0, 0), pictureBox1.Image.Size);
            Bitmap bmp = new Bitmap(pictureBox1.Image);
           Color[] clrs = new Color[bmp.Height * bmp.Width];
            toolStripLabel2.Text = "Считываем...";
            for (int i = 0; i < bmp.Height; i++)
                for (int j = 0; j < bmp.Width; j++)
                {
                    clrs[i * bmp.Width + j] = bmp.GetPixel(j, i);
                    int index = listView1.Items.Add(i.ToString()).Index;
                    listView1.Items[index].SubItems.Add(j.ToString());
                    listView1.Items[index].SubItems.Add(clrs[i * bmp.Width + j].ToString());
                }
            toolStripLabel2.Text = "Заполняем...";
            Bitmap bmp1 = new Bitmap(pictureBox3.Image);
            for (int i = 0; i < bmp1.Height; i++)
                for (int j = 0; j < bmp1.Width; j++)
                {
                    bmp.SetPixel(i, j, clrs[i * bmp1.Width + j]);
                }
            
        }
Координаты считывает а вот второе изображение почему то не заполняется пикселями...

приблизительно нашел ошибку но незнаю как ее исправить...

ошибка в строке

bmp1.SetPixel(i, j, clrs[i * bmp1.Width + j]);

clrs[i * bmp1.Width + j] получается в виде "Color [A=255,R=255,G=255,B=255]"

А должен быть в виде Color.Black насколько я понимаю...

Последний раз редактировалось Stilet; 10.07.2011 в 11:07.
MeTeOpA вне форума Ответить с цитированием
Старый 08.07.2011, 13:51   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Вроде вот так получается что-то похожее на то, что нужно...
Код:
        private void button1_Click(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(pictureBox1.Image);

            Color[,] clrs = new Color[bmp.Height, bmp.Width];

            for (int i = 0; i < bmp.Height; i++)
            {
                for (int j = 0; j < bmp.Width; j++)
                {
                    clrs[i, j] = bmp.GetPixel(i, j);
                    listBox1.Items.Add(clrs[i, j].ToString());
                }
            }


            Bitmap bmp1 = new Bitmap(bmp.Width, bmp.Height);
            for (int i = 0; i < bmp.Height; i++)
            {
                for (int j = 0; j < bmp.Width; j++)
                {
                    
                    bmp1.SetPixel(i, j, clrs[i, j]);
                }
            }
            pictureBox2.Image = bmp1;
        }
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 10.07.2011, 02:00   #3
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Color.Black это и есть A=255,R=255,G=255,B=255 Белый A=255,R=0,G=0,B=0
А - альфа канал
R - красный
G - зеленый
B - синий
dampirik вне форума Ответить с цитированием
Старый 10.07.2011, 02:02   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от dampirik Посмотреть сообщение
Color.Black это и есть A=255,R=255,G=255,B=255 Белый A=255,R=0,G=0,B=0
А - альфа канал
R - красный
G - зеленый
B - синий
dampirik, это с каких пор?
Carbon вне форума Ответить с цитированием
Старый 10.07.2011, 17:52   #5
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

msdn
Ну... с учетом что поддерживается .NET Framework 1.0... то с самого начала...
dampirik вне форума Ответить с цитированием
Старый 10.07.2011, 19:48   #6
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

dampirik, фух! А то я было подумал, что микрософт в какой-то своей вселенной живёт.
Чёрный это всегда было, есть и будет (255, 0, 0, 0), а белый (255, 255, 255, 255)
Carbon вне форума Ответить с цитированием
Старый 11.07.2011, 00:07   #7
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

:-D Да чтото с этим я перепутал))) Прошу прощения)
Цитата:
Color.Black это и есть A=255,R=255,G=255,B=255 Белый A=255,R=0,G=0,B=0
dampirik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с функцией pos. men232 Помощь студентам 6 01.07.2011 20:55
Проблема с функцией strtok Mr.Merso Общие вопросы C/C++ 0 08.05.2011 20:01
проблема с функцией mail() vlad1989 PHP 7 01.02.2011 00:15
проблема с функцией saix Общие вопросы C/C++ 14 28.10.2010 19:07