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

0/5 (7 avis)

Vue 7 236 fois - Téléchargée 241 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
le pro masterchief Messages postés 57 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 9 avril 2008
1 oct. 2007 à 03:26
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.
CChargy Messages postés 126 Date d'inscription samedi 24 avril 2004 Statut Membre Dernière intervention 6 janvier 2008
8 mars 2005 à 17:25
Très bien
je voie pas la différence avec ma source?
Elle ne marchais pas?
Merci quand même
Colin CHARGY
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
6 mars 2005 à 21:16
'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 ...
CChargy Messages postés 126 Date d'inscription samedi 24 avril 2004 Statut Membre Dernière intervention 6 janvier 2008
6 mars 2005 à 13:51
ah bon!
Toutes mes escuses.
Les français n'est pas mon pt fort.
Merci
Colin CHARGY
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
6 mars 2005 à 12:15
mdr!

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.