Закраска PictureBox из массива ARGB

303
26 февраля 2017, 06:49

Здравствуйте! Помогите разобраться, вот, имею код:

string[] stringArraySplit = (getText[0].Split('s'));

        Bitmap bitmap = PictureBox.Image as Bitmap;
        for (int i = 0; i < PictureBox.Image.Width; i++)
        {
            for (int j = 0; j < PictureBox.Image.Height; j++)
            {
                bitmap.SetPixel(i, j, Color.stringArraySplit first to last);
                PictureBox.Refresh();
            }
        }

В getText[0] имеется каша из пикселей ARGB такого формата

255,78,84,80s255,79,85,81s

где s - разделитель. Далее, в stringArraySplit в каждый индекс записывается значение пикселя и мы имеем массив с пикселями, которые нужно отрисовать в битмапе. Далее я указываю в каком порядке отрисовывать пиксели

for (int i = 0; i < PictureBox.Image.Width; i++)
            {
                for (int j = 0; j < PictureBox.Image.Height; j++)
                {

А вот как мне подстроить под этот порядок пиксели из массива не могу понять, допустим:

bitmap.SetPixel(i, j, Color.Red);

Всё работает, пиксели заливаются красным, а как мне вместо красного подсунуть массив, с которого для i, j будут браться пиксели? Порядок отрисовки пикселей с нулевого индекса и до последнего.

Answer 1

Ну наверное как-то так:

string[] stringArraySplit = (getText[0].Split('s'));
var colors = stringArraySplit
        .Select(s => s.Split(','))
        .Select(v => Color.FromArgb(int.Parse(v[0]), int.Parse(v[1]),
                                    int.Parse(v[2]), int.Parse(v[3])))
        .ToList();
int colorIndex = 0;
for (int j = 0; j < PictureBox.Image.Height; j++)
{
    for (int i = 0; i < PictureBox.Image.Width; i++)
    {
        bitmap.SetPixel(i, j, colors[colorIndex]);
        colorIndex++;
    }
}

(Я переставил циклы по i и по j местами, так как скорее всего ваши пиксели именно в таком порядке.)

READ ALSO
TreeView колонка для элементов справа

TreeView колонка для элементов справа

Добрый день! Есть TreeView, в нем есть кнопки, хочется сделать чтобы все эти кнопки был в одной колонки, друг под другом, как это можно сделать?...

428
Yii2 связь один ко многим с Null-object

Yii2 связь один ко многим с Null-object

Собственно сабж, есть 2 сущности связанные отношением один ко многимМножество - набор сущностей, из некоторого временного интервала, каждая...

528
Необязательные параметры роута

Необязательные параметры роута

В документации описывается что всё просто:

380
Кража куки с phpsessid

Кража куки с phpsessid

На сайте session_start(3600); После этого у пользователя на ПК появляется кука с идентификатором сессии

409