譬如说我通过bitblt拷屏下来的位图,想通过直接的方式存储到数据库中,可以吗?
谢谢

解决方案 »

  1.   

    实现方法:
    使用VB中提供的Open 文件函数,将位图文件以二进制的形式打开,再使用GET语句将整个文件读入到一个字符数组中,最后使用AppendChunk方法将位图文件直接存放到数据库中。用Access或VB可视化数据管理器建立一个新的数据库,取名为“multimedia”,在库中建立一个表MultiDataBase。在这个表MultiDataBase中只有一个域:Picture,它的类型是Long Binary型。我们不往表中输入任何数值,也就是说,新表里面没有一个记录。在程序窗口中,设置一个数据库控件DATA1,将它的DataBaseName属性设置为多媒体数据库,RecordSource属性设置为表MultiDataBase。在窗口中放置一个图片框控件,将它的DataSource属性设为DATA1,DataField属性设为Picture域。最后设置一个命令按钮,并对这个“生成”按钮的Click事件编程(设VB程序所在目录下的BMP文件名分别为1.bmp 、2.bmp、…N.bmp):Private Sub Command1_Click()Dim strpic() As ByteDim i As IntegerDim FileName As StringFor i = 1 To NFileName = App.Path + "\" + Trim(Str(i)) + ".bmp"Open FileName For Binary Access Read As #1ReDim strpic(1 To LOF(1))Get #1, , strpic()Close #1Data1.Recordset.AddNewData1.Recordset!Picture.AppendChunk strpic()Data1.Recordset.UpdateNext iCommand1.Enabled = FalseEnd Sub首先要进入一个FOR循环语句,每一次循环,都使用Open函数打开一个位图文件,将位图文件读入到一个字符数组中。通过Addnew方法,在表MultiDataBase中增添一个新的记录。将新记录的Picture域用AppendChunk方法装入字符数组中的位图文件。这样循环N次,就建立了N个记录,在数据库中存放了N个位图。运行这个程序。刚开始时,由于数据库中没有任何记录,所以图片框中没有任何图象,单击数据库控件上的按钮也没有反应。但是当单击“生成”按钮后,可以看到图片框中显示了一幅位图。并且单击数据库控件上的按钮,前后移动记录,可以看到图片框中共能显示N幅位图。这表明已经成功地将N个位图文件直接存放到数据库中了。
      

  2.   

    谢谢junki,你知道怎么直接从内存dc中获得位图的地址,不通过文件形式进行中转吗?