Directdraw - afficher une image sur un bord de l'écran

Soyez le premier à donner votre avis sur cette source.

Vue 3 473 fois - Téléchargée 512 fois

Description

Ce petit code permet d'éviter les habituels effets de bord avec DirectDraw, c'est à dire les images qui disparaissent dès que l'on s'approche des bords de l'écran.

Source / Exemple :


'La fonction principale :

Function AfficherImage(Image As DirectDrawSurface7, ddsd As DDSURFACEDESC2, X As Integer, Y As Integer, Cadre As RECT)
Dim CadreImage As RECT

'Si le CadreAffichage=0 on prend l'écran comme cadre :
If Cadre.Right = 0 And Cadre.Bottom = 0 Then
    Cadre.Right = Screen.Width / Screen.TwipsPerPixelX
    Cadre.Bottom = Screen.Height / Screen.TwipsPerPixelY
End If

'Valeurs par défaut du cadre de l'image
CadreImage.Right = ddsd.lWidth
CadreImage.Bottom = ddsd.lHeight

'Le cadre de l'image ne doit pas dépasser le cadre d'affichage
If X < Cadre.Left Then
    If X + ddsd.lWidth > 0 Then CadreImage.Left = Cadre.Left - X Else Exit Function
End If
If X + ddsd.lWidth > Cadre.Right Then
    If X < Cadre.Right Then CadreImage.Right = Cadre.Right - X Else Exit Function
End If
If Y < Cadre.Top Then
    If Y + ddsd.lHeight > 0 Then CadreImage.Top = Cadre.Top - Y Else Exit Function
End If
If Y + ddsd.lHeight > Cadre.Bottom Then
    If Y < Cadre.Bottom Then CadreImage.Bottom = Cadre.Bottom - Y Else Exit Function
End If

'Dessiner l'image
Backbuffer.BltFast Min(X, 0), Min(Y, 0), Image, CadreImage, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY

End Function

Conclusion :


Vous remarquerez que la fonction demande la variable DDSURFACEDESC2 que l'on a utilisé pour charger l'image : c'est la seule façon que j'ai trouvé pour avoir la taille de l'image. Si vous avez une méthode pour connaitre la taille d'une surface sans cette variable prévenez-moi !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Saros
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010
-
Capture d'écran !
Sinon, tout marche bien chez moi...
9/10
ShadowMaster
Messages postés
184
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
18 août 2005
-
:) je note pas
cs_gwen49
Messages postés
113
Date d'inscription
jeudi 27 novembre 2003
Statut
Membre
Dernière intervention
19 juillet 2006
-
C bien de mettre ça !
Ca m'evitte de faire moi meme le code, et ça me met de bonne humeur :-) 8/10 meme si c'est tout bete c bien de l'avoir mi!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.