Delphi Studio Home Page
Section Delphi
Section DelphiX
Section Open GL Section Algorithmique Section des Liens Une ptite lettre ?? Home Page

Dernière mise à jour : 04 Novembre 2000

Votez pour ce site au WebOrama

Modifier une Image d'un TDXImageLib en cours d'execution (Damien Ferrey)
Modify a TImageList during execution

Collision et zones transparentes (Damien Ferrey)

Modifier la palette d'une surface ou d'un TXDib
How to change the Palette of a surface or a TDXDib

Comment jouer plusieurs sons en même temps
How to play many sounds in the same time

Comment créer une nouvelle "Surface"
How to create a new "surface"

 

Modifier une Image d'un TDXImageLib en cours d'execution (Damien Ferey)

Pour modifier une image d'un TDXImageList en cours d'éxecution (si par exemple on modifie un TBitmap pendant l'application et qu'on souhaite l'assigner à un TDXImageList), Il ne suffit pas de faire un simple Assign, et la ligne suivante est insuffisante: DXImageList.Items[0].Picture.Bitmap.Assign(MBitmap);
Si on fait un simple Assign, les changements ne sont pas pris en compte. La seule manière de faire prendre en compte les changements est de faire appel à la méthode Restore: DXImageList.Items[0].Picture.Bitmap.Assign(MBitmap);
DXImageLisT.Items[0].Restore;

 

For modify a TDXImageList in execution (Like assign a TBitmap) you must do
DXImageList.Items[0].Picture.Bitmap.Assign(MBitmap);
But this line doesn't work, if you want apply change you must call Restore function :

DXImageList.Items[0].Picture.Bitmap.Assign(MBitmap);
DXImageLisT.Items[0].Restore;


Collision et zones transparentes (Damien Ferey)

Si vous utiliser un TDXSpriteEngine, vous savez que la gestion des collisions entre les TSprite est très simple, il suffit de faire un appel à la méthode Collision et écrire un gestionnaire DoCollision. En revanche, si l'image de votre sprite contient des zones transparentes, celles-ci sont considérées par défaut dans la collision des 2 sprite, ce qui peut aboutir parfois à des situations surprenantes: si les 2 sprite en collision ont une zone transparente assez large, on verra 2 sprite éloignés exploser, car le TDXSpriteEngine considérera que la collision a eu lieu. Pour éviter ce genre de désagréments, on peut forcer le TDXSpriteEngine à ne prendre en compte que les zones qui contiennent une image, en mettant la propriété PixelCheck des TSprite sur true à leur création.


Modifier la palette d'une surface ou d'un TDXDib
How to change the Palette of a surface or a TDXDib

Pour modifier la palette d'une surface ou d'un TDXDib, c'est très simple. Pour cela, il faut utilier la propriété COLORTABLE comme ceci :

If you want to change the palette of a surface or a TDXDib, you must use ColorTable property like this :

Dxdraw.surface.colortable[indexCouleur].rgbred:=255;
Dxdraw.surface.colortable[indexCouleur].rgbgreen:=255;
Dxdraw.surface.colortable[indexCouleur].rgbblue:=255;

Dxdraw.surface.updatepalette;

Et voilà, on vient de definir la couleur blanche pour la couleur INDEXCOULEUR.

Simple non !!!!!

This is very easy no !


Comment jouer plusieurs sons en même temps (Gunner)
How to play many sounds in the same time

Pour jouer plusieurs son en même temps, placer le composant DXSOUND ET DXWAVELIST sur votre Form puis insérer le code suivant pour pouvoir entendre vos sons. (il faut que vous mettiez vos WAV dans un fichier dxw)

If you want to hear many sound in the same time you must insert DXSOUND and DXWAVELIST on your form and writing the following code :

dxwavelist.items.loadfromfile('soundlib.dxw');
dxwavelist.items[0].play(false);
dxwavelist.items[1].play(false);

Et voila les 2 sons joueront en même temps.

In this sample you listen 2 sounds in the same time.


Comment créer une nouvelle "Surface"
How to create a new "surface"

Pour ajouter une surface mettez dans la clause Private ou Public (je prefaire private) :

For add a surface put in Private or Public clause :

Masurface : TDirectDrawSuface;

Ensuite Dans le DXDrawInitialize :

And in the DXDrawInitialize procedure :

Masurface:=TDirectDrawSurface.Create(DxDraw.DDraw);
Masurface.LoadFromFile('map2.bmp');

et enfin, pour l'afficher :

And for view surface :

DxDraw.Surface.Draw(posX, posY, Masurface.ClientRect,MapSurface, False);

 

Votez pour ce site au WebOrama

Next Previous List Contact

 

Une petite lettre, c'est par ici