Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Using Picboxes instead of files (graphics)
#3
No, the way it is currently setup, it does not place the data from memory to a picturebox.

Just a little information, this will greatly increase your executable size. If you don't care just keep reading.

Add this sub to your project.

Code:
Public Sub LoadFromPictureBox(DDSURF As DirectDrawSurface7, pBox As PictureBox)
    Dim DC As Long
    Dim DDSD As DDSURFACEDESC2
    Dim Key As DDCOLORKEY
    
    With DDSD
        .lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT
        .ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN Or DDSCAPS_VIDEOMEMORY 'or DDSCAPS_SYSTEMMEMORY whichever you prefer
        .lHeight = pBox.Height
        .lWidth = pBox.Width
    End With
  
    Set DDSURF = DD.CreateSurface(DDSD)
  
    DC = DDSURF.GetDC
    BitBlt DC, 0, 0, pBox.Width, pBox.Height, pBox.hdc, 0, 0, vbSrcCopy
    DDSURF.ReleaseDC DC
    
    DDSURF.SetColorKey DDCKEY_SRCBLT, Key
End Sub

And from your initsurfaces sub, make sure you change where it loads from file to this:

Code:
Call LoadFromPicturebox(thesurf, frmWhatever.pb)

Ok, now on the form where the pictureboxes are, make sure both the form and the pictureboxes scalemode are pixels. Set the pictureboxes autoredraw to true.

[edit]Oh and forgot to mention, after you've loaded all the images you want from the pictureboxes. I would also suggest doing the following:

Code:
frmWhatever.pb.Picture = Nothing

Just so you don't have multiple copies of the image in memory.[/edit]
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)