图像问题 学习DIB技术直接对内存读写一个例子:http://www.21code.com/codebase/?pos=down&id=1754 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这个问题的具体解决方法把图像转为数组:用CreateDIBSection创建一24位色DIB创建一hDC,并把刚才创建DIB选入把图像BitBlt到那个hDC建立一数组分配好大小(与DIB位图所占字节一致)CopyMemory 数组(0),ByVal DIB的地址, DIB位图所占字节把数组转为图像:用CreateDIBSection创建一24位色DIB创建一hDC,并把刚才创建DIB选入CopyMemory ByVal DIB的地址,数组(0), DIB位图所占字节再BitBlt画出图像 谢谢 zyl910(910:分儿,我来了!) 。问题解决了。非常感谢。一点补充:DIB到数组使用GetDIBits 虽然GetDIBits是最正规的方法但用CopyMemory最快 但用copymemory的源目标地址是什么? CreateDIBSection VB声明 Declare Function CreateDIBSection Lib "gdi32" Alias "CreateDIBSection" (ByVal hDC As Long, pBitmapInfo As BITMAPINFO, ByVal un As Long, ByVal lplpVoid As Long, ByVal handle As Long, ByVal dw As Long) As Long 说明 创建一个DIBSection。这是一个GDI对象,可象一幅与设备有关位图那样使用。但是,它在内部作为一幅与设备无关位图保存 返回值 Long,执行成功返回DIBSection位图的句柄,零表示失败。会设置GetLastError 参数表 参数 类型及说明 hDC Long,一个设备场景的句柄。如dw设为DIB_PAL_COLORS,那么DIB颜色表就会用来自逻辑调色板的颜色进行初始化 pBitmapInfo BITMAPINFO,这个结构初始化成欲创建的那幅位图的配置数据 un Long,下述常数之一: DIB_PAL_COLORS BITMAPINFO包含了一个16位调色板索引的数组 DIB_RGB_COLORS BITMAPINFO包含了一个颜色表,其中保存有32位颜色(RGBQUAD) lplpVoid Long,用于载入DIBSection数据区的内存地址 handle Long,指向一个文件映射对象的可选句柄,位图将在其中创建。如设为零,Windows会自动分配内存 dw Long,如指定了句柄,就用这个参数指定位图数据在文件映射对象中的偏移量 注解 一旦不再需要,记住用DeleteObject函数删除DIBSection位图如Windows分配了一个内存缓冲区,那么对象删除以后,缓冲区也会自动删除。如指定了一个文件映射对象,则不会自动将其清除在直接访问DIB内存之前,首先必须保证Windows已完成了绘图(记住,Windows可能对绘图操作进行了排列处理)。通过调用gdiFlush函数,可确保完成所有未决的绘图操作 续《ListView与TextBox的数据传送问题》 请教VB高手,麻烦帮我解决一下! 如何取得WMP控件的句柄呢 如何將一個16進制的數轉換為2進制? Tree.Nodes.Count 树型控件,这句话返回负值,怎么解决 请问怎样将本地的数据(不是很大)上传到网络上的数据库中? 怎样设置数据库文件的路么? 十分头疼的问题困扰了很久 关于vb和Com+的问题 如何在VB6中取得当前路径或系统路径 局域网文件传送 一个关于SendMessage的函数问题(急用)
用CreateDIBSection创建一24位色DIB
创建一hDC,并把刚才创建DIB选入
把图像BitBlt到那个hDC
建立一数组
分配好大小(与DIB位图所占字节一致)
CopyMemory 数组(0),ByVal DIB的地址, DIB位图所占字节
把数组转为图像:
用CreateDIBSection创建一24位色DIB
创建一hDC,并把刚才创建DIB选入
CopyMemory ByVal DIB的地址,数组(0), DIB位图所占字节
再BitBlt画出图像
但用CopyMemory最快
Declare Function CreateDIBSection Lib "gdi32" Alias "CreateDIBSection" (ByVal hDC As Long, pBitmapInfo As BITMAPINFO, ByVal un As Long, ByVal lplpVoid As Long, ByVal handle As Long, ByVal dw As Long) As Long
说明
创建一个DIBSection。这是一个GDI对象,可象一幅与设备有关位图那样使用。但是,它在内部作为一幅与设备无关位图保存
返回值
Long,执行成功返回DIBSection位图的句柄,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hDC Long,一个设备场景的句柄。如dw设为DIB_PAL_COLORS,那么DIB颜色表就会用来自逻辑调色板的颜色进行初始化
pBitmapInfo BITMAPINFO,这个结构初始化成欲创建的那幅位图的配置数据
un Long,下述常数之一:
DIB_PAL_COLORS BITMAPINFO包含了一个16位调色板索引的数组
DIB_RGB_COLORS BITMAPINFO包含了一个颜色表,其中保存有32位颜色(RGBQUAD)
lplpVoid Long,用于载入DIBSection数据区的内存地址
handle Long,指向一个文件映射对象的可选句柄,位图将在其中创建。如设为零,Windows会自动分配内存
dw Long,如指定了句柄,就用这个参数指定位图数据在文件映射对象中的偏移量
注解
一旦不再需要,记住用DeleteObject函数删除DIBSection位图
如Windows分配了一个内存缓冲区,那么对象删除以后,缓冲区也会自动删除。如指定了一个文件映射对象,则不会自动将其清除
在直接访问DIB内存之前,首先必须保证Windows已完成了绘图(记住,Windows可能对绘图操作进行了排列处理)。通过调用gdiFlush函数,可确保完成所有未决的绘图操作