begin process at 2010 02 10 05:38:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Direct X

 > DIRECTDRAW - AFFICHER UNE IMAGE SUR UN BORD DE L'ÉCRAN

DIRECTDRAW - AFFICHER UNE IMAGE SUR UN BORD DE L'ÉCRAN


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Direct X Niveau :Débutant Date de création :13/03/2004 Date de mise à jour :13/03/2004 20:54:13 Vu / téléchargé :2 438 / 385

Auteur : AbeLeMudokon

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 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

  • '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
'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 !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture BREAKERBAWL par xranto
Source avec Zip JEU DE LA ROUE DE LA CHANCE par yvesdudu
Source avec Zip TUTO DIRECT3D 1 : INITIALISATION par ciberrique
Source avec Zip Source avec une capture ENVIRONEMENT 3D A LA PREMIÈRE PERSONNE. DIRECTX8 par djine
Source avec une capture Source .NET (Dotnet) APPLIQUER UNE RESOLUTION GRÂCE À DIRECTDRAW par tinux

Commentaires et avis

Commentaire de Saros le 14/03/2004 09:26:04

Capture d'écran !
Sinon, tout marche bien chez moi...
9/10

Commentaire de ShadowMaster le 14/03/2004 17:28:31

:) je note pas

Commentaire de gwen49 le 10/05/2004 20:32:06

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!

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales