这个问题已经难了我很久了,但是一直没有解决掉

解决方案 »

  1.   

    据我所知,现在的 PB 8.0 可以使用 API 的啊你用 LoadImage , Bitblt 等 API 函数试试看
      

  2.   

    老大能不能具体一点,例如,在VB中做一个与LoadPicture相同功能的函数,我想我可以把它抄到PB里去。
      

  3.   

    等一下啊,纯用 API 的我给你写一个不过直接抄到 PB 可能不行,语法不是完全相同的啊   :)
      

  4.   

    Option Explicit
    Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
    Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
    Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
    Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
    Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As LongConst LR_LOADFROMFILE = &H10
    Const IMAGE_BITMAP = 0
    Const LR_CREATEDIBSECTION = &H2000
    Private Type BITMAP '14 bytes
            bmType As Long
            bmWidth As Long
            bmHeight As Long
            bmWidthBytes As Long
            bmPlanes As Integer
            bmBitsPixel As Integer
            bmBits As Long
    End Type
    Private Sub Form_Load()
        Picture1.AutoRedraw = True
    End SubPrivate Sub Command1_Click()
        Picture1.Picture = LoadPicture(App.Path + "\1.bmp")
    End SubPrivate Sub Command2_Click()
        Dim hMemdc As Long, hbmp As Long, holdbmp As Long, hBitmap As Long
        Dim bm As BITMAP
        Dim i As Integer    hBitmap = LoadImage(App.hInstance, App.Path + "\1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or LR_CREATEDIBSECTION)
        hMemdc = CreateCompatibleDC(Picture1.hdc)
        SelectObject hMemdc, hBitmap
        GetObject hBitmap, Len(bm), bm    BitBlt Picture1.hdc, 0, 0, bm.bmWidth, bm.bmHeight, hMemdc, 0, 0, vbSrcCopy
        Picture1.Refresh
        
        DeleteDC hMemdcEnd Sub
      

  5.   

    上面的是针对 BMP 来写的啊,其他格式的不行
      

  6.   

    谢谢楼上的热心,但是我的要求是picture1.picture = user_loadpicture('')能达到这样的效果吗,我不知道VB当中的picture属性是个什么样的数据结构,我如何能得到类似的数据结构