SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
13 déc. 2005 à 15:21
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
14 avril 2006 à 04:52
Pour résumé, j'ai fait une DLL de graphisme 2D qui marche très bien. Le seul problème c'est que c'est très lent. J'utilisais SetPixel pour afficher les pixels (voir procédure dans la question lenteur) On ma suggéré d'utiliser BitBlt. Mais, corrigez moi si je me trompe, BitBlt n'est pas fait pour créé des pixels. Il ne fait que les afficher à l'écran. Donc ma question reviend à: connessez vous un moyen pour créé des pixels à l'écran sans faire ramé l'ordi. En gros sans utiliser SetPixel.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 7 avril 2006 à 23:47
Bon j'ai fais ceci pour afficher trois pixel a l'écran. Ça marche mais premièrement, les coordonné sont à l'enver, les point ne sont pas au bonne endroit (même a l'enver), et sont jaune plutot que mauve (0xFF00FF)
BITMAPINFO dib;
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 8 avril 2006 à 15:28
Tien j'ai remplacer BYTE *test = (BYTE*)malloc(bytewidth*150);
par
BYTE *test = (BYTE*)malloc((bytewidth*sizeof(BYTE))*(150*sizeof(BYTE)));
pour avoir une taille exacte mais ça ne change rien.
___________________________________________
Les plus grands esprits trouvent toujours une solution
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 8 avril 2006 à 18:02
Ben il me faudrais refaire le reste du code pour tester, je vais voir
si je retrouve une base deja faite pour tester mais tu as quoi en fait
une seule ligne de pixel ? C'est la bonne couleur (si oui on est sur le
bon chemin) ??.
Et a pars que moi j utilise new a la place de malloc et que donc je
passe &lpbit a la place de lpbit je voit pas pourquoi cela ne
marcherait pas.
teste dib.bmiHeader.biBitCount = 32; mais chez moi j utilise 24 aussi.
En fait tu as obligatoirement un decalage dans ton tableau de pixel
mais pour savoir a quel niveau il te faut debugger ou bidouiller (
essaye d'afficher une diagonale au lieu d'un carré)
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 9 avril 2006 à 15:15
Ben tu vois si je fais tmp = (150-y)*150+3*x; il me les décale seulement et la position 0,0 se retrouve a 0,120. Aussi si je fais &lpBit soit avec malloc ou new, ya plus rien du tout qui saffiche. Ensuite si justilise dib sans & c simplement que le dib est défiinie dans un autre programme et envoyer en param à la fonction qui utilise SetDIBitsToDevice. Sinon change 24 par 32 ne change rien non plus. On dirais qu'il part simplement d'un point, qu'il remplie la ligne et une fois remplie, il saute a l'autre et fais pareille.
___________________________________________
Les plus grands esprits trouvent toujours une solution
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 10 avril 2006 à 18:46
"tu vois si je fais tmp = (150-y)*150+3*x; il me les décale seulement
et la position 0,0 se retrouve a 0,120" alors ya un gros probleme car
si je fait les calculs a la main
pour tmp = y*150+3*x
pour p(0,0) >> tmp=0
pour p(0,150) >tmp = 22500
pour tmp = (150-y)*150+3*x
pour p(0,0) >> tmp=22500
pour p(0,150) >tmp = 0
C'est exactement l'inverse c'est impossible de se retrouver en (0,120).Tu doit avoir un probleme dans le reste du code.