Directdraw creation de surface depuis un Stream

MrDogbert Messages postés 133 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 20 juillet 2004 - 13 juil. 2004 à 20:30
MrDogbert Messages postés 133 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 20 juillet 2004 - 14 juil. 2004 à 15:52
Si quelqu'un sait comment créer une surface depuis autre chose qu'un nom de fichier (un Stream ou un objet Image seraient l'ideal) je suis preneur!!!

merci par avance.

MRDOGBERT

2 réponses

MrDogbert Messages postés 133 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 20 juillet 2004 1
13 juil. 2004 à 20:41
oups ... suis je distrait .... j avais oublié de préciser que je travaille avec vb.net alors ce serait beaucoup mieux si la solution n'utiliser pas winapi mais le framework.net.

re merci.

MRDOGBERT
0
MrDogbert Messages postés 133 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 20 juillet 2004 1
14 juil. 2004 à 15:52
pour ceux que ca interesse, voici une petite solution :

soit DD l objet DirectDraw7

  Public Function getSurfaceFromStream(ByVal stream As Stream) As DirectDrawSurface7

        Dim b As Image = New Bitmap(stream)

       'Obtenir la surface
        Dim desc As DDSURFACEDESC2
        desc.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
        desc.lWidth = b.Width
        desc.lHeight = b.Height
        desc.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
        Dim surface As DirectDrawSurface7 = DD.CreateSurface(desc)

        'création d'un Graphics a partir du HDC de la surface
        Dim hdc As Integer = surface.GetDC()
        Dim dest As Graphics = Graphics.FromHdc(New IntPtr(hdc))

        'copie de l'image
        dest.DrawImage(b, 0, 0, b.Width, b.Height)

        'libération de la mémoire
        dest.Dispose()

        'release du HDC
        surface.ReleaseDC(hdc)

        Dim key As DDCOLORKEY
        key.low = RGB(255, 0, 255)
        key.high = RGB(255, 0, 255)
        surface.SetColorKey(DDCKEY_SRCBLT, key)

        Return surface
    End Function



C'ets une solution rapide de prototypage alors ne hurlez pas sur la facon de coder ...
Par contre si qqun a mieux je suis toujours preneur.

au fait, si qqun peut me dire pourquoi l aide de Visual Studio 2002 indique les fonctions FromHdc, etc ... pour la classe Graphics alors que la complétion de mot sous l editeur ne les affiche pas ?

MRDOGBERT
0
Rejoignez-nous