在线等!!!在VB中如何用写文件的方法生成一个BMP位图文件
在VB中要生成一个BMP位图文件,要求向位图文件中写入文件头等一些相关的信息来生成这个位图文件,这需要调用API函数吗.在VC中是先调用了一些结构,在VB中好像没有那些文件头信息的结构啊,该怎么办啊
谢谢
问题点数:20、回复次数:10Top
1 楼BitBlt(Raster Operater)回复于 2004-05-04 20:50:09 得分 3
api浏览器里有。
bitmapfileheader
bitmapinfoheader
rgbquad
bitmapinfoTop
2 楼kittyflower(kitty)回复于 2004-05-04 21:07:12 得分 0
在VB里直接调用它们就可以吗?是用什么API函数调用啊
谢谢Top
3 楼BitBlt(Raster Operater)回复于 2004-05-05 03:40:35 得分 4
不用API.
用文件操作的那几条语句就行了.
注意bmicolors(255) as rgbquad
此处一定要加上255,原来没有的.Top
4 楼boywhp()回复于 2004-05-05 08:36:39 得分 5
Dim bmpFileHeader As BITMAPFILEHEADER
Dim lRet As Long, OF As OFSTRUCT ', OV As OVERLAPPED
With bmpFileHeader
.bfType = &H4D42 'BM
.bfReserved1 = 0
.bfReserved2 = 0
.bfSize = CLng(m_pitch) * m_height
.bfOffBits = LenB(bmpFileHeader) + LenB(bmpinfo)
bmpinfo.bmiHeader.biHeight = -bmpinfo.bmiHeader.biHeight
End With
lRet = OpenFile(FileName, OF, OF_WRITE Or OF_CREATE)
WriteFile lRet, bmpFileHeader, 14, 14, ByVal 0&
WriteFile lRet, bmpinfo, 44, 44, ByVal 0&
WriteFile lRet, ByVal m_ptr, bmpFileHeader.bfSize, bmpFileHeader.bfSize, ByVal 0&
CloseHandle lRet
Open FileName For Binary As #1
Put #1, , bmpFileHeader 'Becase Of Vb's Data Type Bug!
Close #1
可以保存为BMP文件,但是是上下是反的Top
5 楼kmzs(.:RNPA:.山水岿濛)回复于 2004-05-05 08:48:55 得分 2
上下是反的。。。。。。Top
6 楼0qr0413356(王鹤)回复于 2004-05-05 09:01:20 得分 2
王丽你好:
我有问题但不会发贴子,所以利用你的信箱用一下,打扰一下。不好意思了!Top
7 楼0qr0413356(王鹤)回复于 2004-05-05 09:05:21 得分 0
王丽你好:
我有问题但不会发贴子,所以利用你的信箱用一下,打扰一下。不好意思了!
联系方式:qr0413356@126.com
大家帮忙了,谢谢了!!!!!Top
8 楼boywhp()回复于 2004-05-05 10:56:07 得分 2
m_ptr 是图像数据的首地址Top
9 楼kittyflower(kitty)回复于 2004-05-05 12:19:40 得分 0
谢谢上面各位的回复
m_ptr图像的首地址在哪里定义的,新生成的一个位图文件应该给该文件分配空间,该怎么分配啊!Top
10 楼boywhp()回复于 2004-05-05 13:22:21 得分 2
m_pitch为一行的字节数
一般24位的颜色占用3个字节,m_pitch=3*图像宽度
一般可以把图像存放在二维数组里data(w*3-1,h-1)
m_ptr=varptr(data(0,0)) '有可能有问题
或者直接使用
WriteFile lRet,data(0,0) , bmpFileHeader.bfSize, bmpFileHeader.bfSize, ByVal 0&Top




