Как отрисовать изображение?

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

Как отрисовать изображение?

Сообщение Brusco » 15.06.2009 (Пн) 15:05

Есть байтовый массив, содержащий пикселы картинки 256ти цветов 10 на 6 (60 байт), точнее это только индексы палитры цветов, которая хранится отдельно 256х3 (RGB). Я заполнил структуру LOGPALETTE и создал палитру:

Код: Выделить всё
Private Sub Form_Paint()
Dim bi24BitInfo As BITMAPINFO, Dim bBytes(1 To 60) As Byte, LogPal As LOGPALETTE
Dim R As Long
Dim massif(1 To 768) As Byte

With bi24BitInfo.bmiHeader
        .biBitCount = 8
        .biCompression = BI_RGB
        .biPlanes = 1
        .biSize = Len(bi24BitInfo.bmiHeader)
        .biWidth = 10
        .biHeight = 6
End With

Open "1.pal" For Binary Access Read As #1

Get #1, 72 + 1, massif

Close #1
   
LogPal.palVersion = &H300
LogPal.palNumEntries = 256

j = 1
For i = 1 To 256 Step 1
    LogPal.palPalEntry(i).peRed = massif(j + 2)
    LogPal.palPalEntry(i).peGreen = massif(j + 1)
    LogPal.palPalEntry(i).peBlue = massif(j)
    j = j + 3
Next i

hPal = CreatePalette(LogPal)
hPalprev = SelectPalette(Me.hdc, hPal, 0)
R = RealizePalette(Me.hdc)


Далее попробовал отрисовать через:
Код: Выделить всё
SetDIBitsToDevice Me.hdc, 100, 100, bi24BitInfo.bmiHeader.biWidth, bi24BitInfo.bmiHeader.biHeight, 0, 0, 0, bi24BitInfo.bmiHeader.biHeight, bBytes(1), bi24BitInfo, DIB_PAL_COLORS


Вроде что-то отрисовало, только видимо без использования палитры, т.к. различить на рисунке ничего нельзя. Меня ещё смущает то, что в переменной R содержится 0. Может функция для отрисовки палитру не использует?

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: Как отрисовать изображение?

Сообщение JohnK » 18.06.2009 (Чт) 22:50

Попробуй вручную с помощью Picture1.pset(X,Y), RGB(1,2,3)
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как отрисовать изображение?

Сообщение iGrok » 18.06.2009 (Чт) 22:51

JohnK писал(а):Попробуй вручную с помощью Picture1.pset(X,Y), RGB(1,2,3)

Не смешно.
label:
cli
jmp label

Brusco
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 22.10.2004 (Пт) 3:16
Откуда: Reutov, Russia

Re: Как отрисовать изображение?

Сообщение Brusco » 19.06.2009 (Пт) 10:07

Я почти так и сделал. Создал массив из picturebox, каждый элемент представляет собой пиксел, перевёл каждый индекс в изображении в RGB в соответсвии с палитрой и вывел на эти picturebox.

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

Re: Как отрисовать изображение?

Сообщение Viper » 19.06.2009 (Пт) 11:49

Brusco писал(а):Я почти так и сделал. Создал массив из picturebox, каждый элемент представляет собой пиксел, перевёл каждый индекс в изображении в RGB в соответсвии с палитрой и вывел на эти picturebox.
Через PSet? :shock:
Весь мир матрица, а мы в нем потоки байтов!

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: Как отрисовать изображение?

Сообщение JohnK » 19.06.2009 (Пт) 12:14

А зачем массив создавать из PictureBox? На одном все рисуй.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Brusco
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 22.10.2004 (Пт) 3:16
Откуда: Reutov, Russia

Re: Как отрисовать изображение?

Сообщение Brusco » 19.06.2009 (Пт) 16:48

Viper писал(а):Через PSet? :shock:


Хуже :) Через Load Form1.Picture1(i)

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: Как отрисовать изображение?

Сообщение JohnK » 19.06.2009 (Пт) 17:21

Смысл? :shock:
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Brusco
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 22.10.2004 (Пт) 3:16
Откуда: Reutov, Russia

Re: Как отрисовать изображение?

Сообщение Brusco » 19.06.2009 (Пт) 17:24

JohnK писал(а):Смысл? :shock:


Увидеть правильно ли растровое изображение и палитру загрузил.


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 55

    TopList