Пробуем получить цвет пиксела из массива GetBitmapBits

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

Пробуем получить цвет пиксела из массива GetBitmapBits

Сообщение Mihail_ » 30.07.2009 (Чт) 18:07

Здравствуйте, подскажите пожалуйста, как выделить цвет пиксела из массива, создаваемого функцией GetBitmapBits ?
Как там формируется цвет из RGB?

неудачная попытка прилагается

на форме 2 пикчер-бокса, в первом картинка, во-второй я пытаюсь ее по-пиксельно перенести (чтобы понять как выделается цвет пиксела)
вроде как там нужно делать блоки по 4 байта, где первые 3 байта это RGB, а 4-й не используется
Я пытался эти байты и перемножать и складывать, но в результате получается либо переполнение буфера, либо не тот результат, который ожидался..


Код: Выделить всё
Private Sub Command1_Click()
Dim lCol As Long, x As Integer, y As Integer

GetObject Picture1.Image, Len(PicInfo), PicInfo
BytesPerLine = (PicInfo.bmWidth * 3) + (PicInfo.bmWidth Mod 4)
ReDim PicBits(1 To BytesPerLine * PicInfo.bmHeight * 3) As Byte
GetBitmapBits Picture1.Image, UBound(PicBits), PicBits(1)

For Cnt = 4 To UBound(PicBits) Step 4 ' отсчитываем 4 байта

x = x + 1
If x = Picture1.ScaleWidth Then
x = 0
y = y + 1
End If
lCol = PicBits(Cnt - 1) '+ PicBits(Cnt - 2) + PicBits(Cnt - 1)

Picture2.PSet (x, y), lCol

Next Cnt

End Sub



Буду признателен за помощь.
Вложения
BitBITS.rar
(5.88 Кб) Скачиваний: 57

Йода
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 99
Зарегистрирован: 06.01.2008 (Вс) 21:04
Откуда: Московская область

Re: Пробуем получить цвет пиксела из массива GetBitmapBits

Сообщение Йода » 30.07.2009 (Чт) 23:31

Mihail_ писал(а):3 байта это RGB, а 4-й не используется

Первые 3 байта это не RGB, а BGR. То есть первый байт содержит значение синего компонента.
Mihail_ писал(а):Я пытался эти байты и перемножать и складывать

Есть специальная функция. Называется RGB.
Держи слегка поправленный код.
Вложения
BitBITS.rar
(5.79 Кб) Скачиваний: 118
Sub or Function not defined

Mihail_
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 31.03.2008 (Пн) 20:57

Re: Пробуем получить цвет пиксела из массива GetBitmapBits

Сообщение Mihail_ » 31.07.2009 (Пт) 19:44

как говорится: все гениальное - просто
большое спасибо!


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

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

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

    TopList