Algorythme de clippage d'image dans directdraw 7 (comptatible vc++ 6 et vb 6)

Soyez le premier à donner votre avis sur cette source.

Vue 6 962 fois - Téléchargée 236 fois

Description

Un simple algorythme de clippage d'image dans DirectDraw 7 expliquer (je l'espère) clairement. Il est souvent utile et on s'y arrache rapidement les cheveux pour le trouver. Il permet de mettre une surface dans le BackBuffer qui ne disparait pas si elle est au bord de la surface.

Somaire:
- Les bases de DirectDraw 7 ( seulement ce qui est en rapport avec l'algorythme, n'est vpas un cour de DirectDraw)
- Présentation de l'algorythme
- Apliquation dans Visual Basic (pas testé)
- Apliquation dans VC++

Explique ce qu'est une variable RECT

Source / Exemple :


Tout est dans le zip
PS.: C'est l'html

Conclusion :


Le code a été tester sous VC++ 6 mais pas sous VB 6.
J'attend vos remarques

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
57
Date d'inscription
vendredi 4 novembre 2005
Statut
Membre
Dernière intervention
9 avril 2008

Je trouve pas cela très fort de ta part tu ne teste même pas tes sources avec vb6 c'est vbfrance ici pas cppfrace et en plus ca ne marche pas ca clip l'image et ca les fait disparaitre.
Messages postés
126
Date d'inscription
samedi 24 avril 2004
Statut
Membre
Dernière intervention
6 janvier 2008

Très bien
je voie pas la différence avec ma source?
Elle ne marchais pas?
Merci quand même
Colin CHARGY
Messages postés
589
Date d'inscription
lundi 25 août 2003
Statut
Membre
Dernière intervention
18 juillet 2010
1
'Pour que ceci fonctionne il faut mettre les dimmensions de l'image dans X1, X2 , Y1, Y2 pour une image de 32*32 on met :
X1 = 0, Y1=0, X2 = 32, Y2 = 32

Public Function DrawScrolledSurf(Surf As DirectDrawSurface7, _
ByVal X, ByVal Y, _
ByVal X1, ByVal X2, _
ByVal Y1, ByVal Y2)


If X < 0 Then
X1 = X1 - X
X = 0
End If
If Y < 0 Then
Y1 = Y1 - Y
Y = 0
End If

'Il suffit de remplacer 640 * 480 par la taille que l'on veux

If X + X2 > 640 Then X2 = X2 - ((X + X2) - 640)
If Y + Y2 > 480 Then Y2 = Y2 - ((Y + Y2) - 640)
Backbuffer.BltFast X, Y, Surf, ddRect(X1, Y1, X2, Y2), DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
End Function

J'espere avoir apporté quelque chose à cette source ...
Messages postés
126
Date d'inscription
samedi 24 avril 2004
Statut
Membre
Dernière intervention
6 janvier 2008

ah bon!
Toutes mes escuses.
Les français n'est pas mon pt fort.
Merci
Colin CHARGY
Messages postés
1114
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007

mdr!
Afficher les 7 commentaires

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.