Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Карта битов Добавлено: 27.01.08 15:17  

Автор вопроса:  Bonapart | Web-сайт: team16.tut.su | ICQ: 175256 
Как открыть BMP файл как массив и работать только с масивом цветов.

Ответить

  Ответы Всего ответов: 20  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 27.01.08 15:37
Все заголовки BMP-файлов прекрасно описаны в MSDN.

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 27.01.08 17:34
Заголовки кстати занимают 54 байта, я помню=)

Ответить

Номер ответа: 3
Автор ответа:
 Bonapart



ICQ: 175256 

Вопросов: 32
Ответов: 108
 Web-сайт: team16.tut.su
 Профиль | | #3
Добавлено: 27.01.08 17:42
MSDN не имею :(
Ссылки или код рабочий дайте

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 27.01.08 18:53
зато интернет его имеет)

Ответить

Номер ответа: 5
Автор ответа:
 Bonapart



ICQ: 175256 

Вопросов: 32
Ответов: 108
 Web-сайт: team16.tut.su
 Профиль | | #5
Добавлено: 27.01.08 19:31
он виснет
сайты Мелкософта весят по метру и найти не могу ничего для VB6 только для VB.net2008 всё

Ответить

Номер ответа: 6
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #6
Добавлено: 27.01.08 19:39
ну ладно. в последний раз=)
Private Declare Function SetDIBitsToDevice Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal Scan As Long, ByVal NumScans As Long, Bits As Any, BitsInfo As BITMAPINFO, ByVal wUsage As Long) As Long

Private Type BITMAPINFOHEADER '40 bytes
    biSize As Long
    biWidth As Long
    biHeight As Long
    biPlanes As Integer
    biBitCount As Integer
    biCompression As Long
    biSizeImage As Long
    biXPelsPerMeter As Long
    biYPelsPerMeter As Long
    biClrUsed As Long
    biClrImportant As Long
End Type

Private Type BITMAPFILEHEADER '14 bytes
    bfType As String * 2 '"magic cookie" - must be "BM"
    bfSize As Long
    bfReserved1 As Integer
    bfReserved2 As Integer
    bfOffBits As Long
End Type

Private Type BITMAPINFO
    bmiHeader As BITMAPINFOHEADER
    bmiColors() As Long 'array of RGBQUADs
End Type

Public Function BMPFillInfoStruct(ByVal filename As String) As Boolean
Dim hfile As Long, bfh As BITMAPFILEHEADER
Dim BMi As BITMAPINFO
Dim WritePos As Long
Dim FileDat() As Byte
hfile = FreeFile()

'On Error Resume Next
ReDim FileDat(FileLen(filename) - 54)
Open filename For Binary Access Read As #hfile
    Get #hfile, , bfh
    Get #hfile, 15, BMi.bmiHeader 'start at the 15th byte
    Get #hfile, 55, FileDat
Close #hfile 'Close file
Call SetDIBitsToDevice(Picture1.hdc, 0, 0, BMi.bmiHeader.biWidth, BMi.bmiHeader.biHeight, 0, 0, 0, BMi.bmiHeader.biHeight, FileDat(0), BMi, 0)
Picture1.Refresh
BMPFillInfoStruct = True 'indicate success
End Function

Ответить

Номер ответа: 7
Автор ответа:
 Bonapart



ICQ: 175256 

Вопросов: 32
Ответов: 108
 Web-сайт: team16.tut.su
 Профиль | | #7
Добавлено: 28.01.08 07:24
а пользоватьсо этим то как?

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 28.01.08 20:09
ну как... в BMPFillInfoStruct передаешь путь к файлу BMP. А функция SetDIBitsToDevice нарисует картинку на Picture1

Ответить

Номер ответа: 9
Автор ответа:
 Bonapart



ICQ: 175256 

Вопросов: 32
Ответов: 108
 Web-сайт: team16.tut.su
 Профиль | | #9
Добавлено: 29.01.08 14:18
мне надо к примеру для всего рисунка краный цвет убрать,увеличить рисунок ровно в два раза(1 пиксель на 4)

Ответить

Номер ответа: 10
Автор ответа:
 Bonapart



ICQ: 175256 

Вопросов: 32
Ответов: 108
 Web-сайт: team16.tut.su
 Профиль | | #10
Добавлено: 29.01.08 14:21
у тебя только один массив FileDat а мне бы хотелось масив с таким описание
dim filedat(width,heigth,3) as byte
последний параметр - интенсивность красного,зелёного,синего,прозрачность хотя можно и без прозрачности

Ответить

Номер ответа: 11
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #11
Добавлено: 29.01.08 15:56
какой-то странный массив filedat(width,heigth,3) as byte...
------------------------------
BMi.bmiHeader.biWidth - ширина
BMi.bmiHeader.biHeight - высота
В FileDat записана интенсивность красного,зелёного,синего по очереди для каждого пикселя, не помню только как нумерация пикселей идет:
123 либо 987
456 либо 654
789 либо 321
для рисунка 3х3, хотя таких вроде не бывает.

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 29.01.08 15:58
SetDIBitsToDevice работает только с таким массивом как FileDat. Иначе придется вручную рисовать. я так сичтаю

Ответить

Номер ответа: 13
Автор ответа:
 Bonapart



ICQ: 175256 

Вопросов: 32
Ответов: 108
 Web-сайт: team16.tut.su
 Профиль | | #13
Добавлено: 29.01.08 16:21

В FileDat записана интенсивность красного,зелёного,синего по очереди для каждого пикселя, не помню только как нумерация пикселей идет:
123 либо 987
456 либо 654
789 либо 321


Поконкретней можно?
как привести число там записаное к 3 составляющим и обратно

Ответить

Номер ответа: 14
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #14
Добавлено: 29.01.08 17:54
да нееет же.
Там так:
Байт№1 - красный для первого пикселя
Байт№2 - зеленый для первого пикселя
Байт№3 - синий для первого пикселя
Байт№4 - красный для второго пикселя
Байт№5 - зеленый для второго пикселя
Байт№6 - синий для второго пикселя
Байт№7 - красный для третьего пикселя
Байт№8 - зеленый для третьего пикселя
Байт№9 - синий для третьего пикселя

я не помню где первый пиксель - в конце или в начале

Ответить

Номер ответа: 15
Автор ответа:
 xuser



Вопросов: 1
Ответов: 20
 Профиль | | #15 Добавлено: 30.01.08 07:15
Я думал - на vb6 уже никто не программирует.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам