Преобразование Массива Байт в Picture

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Zaratustra
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 8:36

Преобразование Массива Байт в Picture

Сообщение Zaratustra » 11.07.2008 (Пт) 8:39

Такой вопрос:
У меня есть массив байт, содержащий RGB и НЕ содержащий никаких заголовков и т.п.
Нужно показать его на форме, скажем в PictureBox или Image.
Размеры картинки мне известны, цвета - gray scale.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.07.2008 (Пт) 8:40

Так RGB или Grayscale?
Если структура массива соответствует BMP, то есть SetDIBits.
Lasciate ogni speranza, voi ch'entrate.

Zaratustra
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 8:36

Сообщение Zaratustra » 11.07.2008 (Пт) 8:52

Видимо все же RGB, причем 256 цветовой, но не уверен...
В массиве только цвета, больше ничего, никаких заголовков и т.п..

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.07.2008 (Пт) 9:17

256 это не RGB. Это 256.
Лучший способ понять что-то самому — объяснить это другому.

Zaratustra
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 8:36

Сообщение Zaratustra » 11.07.2008 (Пт) 9:19

Сорри, торможу.
Так что делать-то? Массив байтов цветов, приводим к картинке, как?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.07.2008 (Пт) 9:23

1) Сколькими байтами закодирован цвет?
2) Известен ли размер картинки?
3) Откуда вообще взялся этот массив?
Лучший способ понять что-то самому — объяснить это другому.

Zaratustra
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 8:36

Сообщение Zaratustra » 11.07.2008 (Пт) 9:25

1) одним байтом
2) известен
3) не скажу ;)

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.07.2008 (Пт) 9:39

Код: Выделить всё
If Высота * Ширина <> UBound(mas) + 1 And LBound(mas) = 0 then
    MsgBox "Все это чушь собачья, ответ на третий вопрос мог бы просянить ситуацию."
else
    Form.ScaleMode=vbPixels
    Form.AutoRedraw=True
    For y=0 To Высота
        For x=0 To Ширина
             Form.Pset (x + 1, y + 1),  mas((x + 1) * y + x)
        Next
    Next
End If
Лучший способ понять что-то самому — объяснить это другому.

Zaratustra
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 8:36

Сообщение Zaratustra » 11.07.2008 (Пт) 9:56

Именно так я сначала и сделал, но появилась следующая проблема: картинка имеет размерность 256*400, а для устойчивого изображения на форме его нужно постоянно перерисовывать (иначе теряется при перекрытии другими формами и т.п.). Соответственно имеем сильно раздражающее блымание картинки и тормоза в проге...
Может какие "быстрые" методы есть, АПИ и т.п.?

P.S. На третий вопрос: из длл"ки, которая читает картинку с хитрого девайса и возвращает ее в виде массива цветов пикселов. Правда, не могу понять как эта инфа может помочь...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.07.2008 (Пт) 10:17

Form.AutoRedraw=True предназначено как раз для того, чтобы картинку не нужно было постоянно перерисовывать.
Лучший способ понять что-то самому — объяснить это другому.

Zaratustra
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 11.07.2008 (Пт) 8:36

Сообщение Zaratustra » 11.07.2008 (Пт) 10:23

О! Дело!
СПА-СИ-БО!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 11.07.2008 (Пт) 16:28

Честно говоря способ с циклами и псетом отвратителен.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Сообщение Zenitchik » 11.07.2008 (Пт) 17:53

Работает - и черт с ним.
Знание английского языка - затрудняет понимание кода

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 11.07.2008 (Пт) 17:54

Дизреспект.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 12.07.2008 (Сб) 8:37

Хакер писал(а):Честно говоря способ с циклами и псетом отвратителен.
Предложи альтернативу.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 12.07.2008 (Сб) 10:38

alibek уже предложил.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ВикторZX
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 10.06.2008 (Вт) 13:07
Откуда: Киев

Сообщение ВикторZX » 14.07.2008 (Пн) 10:11

юзай SetDiBitSToDevice - в чем проблема?!!
null

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 14.07.2008 (Пн) 10:29

ВикторZX
Может не надо повторять то, что уже сказано два раза подряд?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Yandex-бот и гости: 13

    TopList  
cron