Bonjour à tous,
Après quelques heures de recherche, je n'ai toujours pas trouvé la réponse à ma question.
Je suis en train de concevoir un programme où on tire une bille et celle-ci doit rebondir sur le sol. J'ai réussi cette étape avec un sol plat. C'est à dire que j'ai créé une procédure qui lorsque la bille est à l'ordonné y=2 par exemple fait rebondir la bille (inversement de la composante sur y de sa vitesse).
Maintenant, je voudrais faire la même chose mais avec un sol aléatoire. Un peu avec des vaguelettes. Pour cela, je me suis dit qu'il faudrait dessiner le sol d'une certaine couleur et de créer une procedure qui stocke tous les pixels d'une certaine couleur dans un tableau et qui donnerait ainsi les coordonnées de chaque pixels du sol.
Lors de mes recherches, j'ai vu qu'il y avait la fonction Scanline. Simplement, elle ne peut être utilisée que sous Delphi. De plus, je ne veux pas utiliser de bibliothèque extérieur du genre BRGBitmap.
http://www.developpez.net/forums/d11...tmap-scanline/ sur cette discussion, on peut voir qu'on peut utiliser TBitmap.RawImage.Data.
Simplement je n'arrive pas à l'utiliser. Est-ce qu'on peut m'aider à écrire la procédure qui stocke les coordonnées de pixels d'une couleur définit.
J'avais trouvé une source sous Delphi que j'ai essayé de modifier pour s'approcher de ce que je veux. Ici la couleur est 255 0 255.
Merci à tous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Procedure CSol.Analyse; var x, y : integer; // colonnes, lignes Row : Prgbarray; // pointeur scanline R,G,B : integer; // les 3 couleurs begin For y := 0 to fImage.height-1 do // attention au -1 begin row := fImage.scanline[y]; // scanline for x := 0 to fImage.width-1 do // attention au -1 begin R := Row[x].rgbTred ; G := Row[x].rgbTgreen; B := Row[x].rgbTblue ; {if R = 255 and G = 0 and B = 255 then row[x].rgbtred := R; row[x].rgbtgreen := G; row[x].rgbtblue := B;} end; end; end;
Partager