Probléme avec la fonction SetPixel de l'api windows
Mareck666
Messages postés56Date d'inscriptionlundi 6 février 2006StatutMembreDernière intervention30 avril 2013
-
21 déc. 2008 à 14:35
DoctorNitro
Messages postés3Date d'inscriptionsamedi 28 mars 2009StatutMembreDernière intervention16 juillet 2009
-
16 juil. 2009 à 19:39
Salut Salut tous le monde si je vien poster sur ce forum c'est parce que je n'arrive pas a trouver des explication a un mystérieux bug de la fonction setpixel de windows je m'explique :
tous d'abord je souhaite realiser un programme qui puisse dessiner sur le bureau de windows, et donc pour cela j'utilise la fonction GetDC(0) afin d'obtenir le device contexte du bureau, puis aprés je procéde via une boucle a la coloration pixel par pixel du bureau, mai cest la qu'et le probléme, au lieu de me mettre tous le bureau en blanc seulement 3 "portions" de l'écran sont peinte une a gauche l'autre au centre la derniére a droite et il me laisse les autres normal ...
racpp
Messages postés1910Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201416 21 déc. 2008 à 23:01
Salut,
Je viens de tester ton petit code. Tout l'écran devient blanc. Ta boucle infinie prend 99% du temps processeur. Essaie de mettre une image pour illustrer ton problème.
Kian_ix
Messages postés26Date d'inscriptiondimanche 18 février 2007StatutMembreDernière intervention 5 avril 2009 11 janv. 2009 à 17:00
[../auteur/MARECK666/687461.aspx
]Mareck666>
jai exactement le meme probleme que toi... ce dont je suis sur à 100%
c'est ce bug du SetPixel() est lié à windows vista, car j'ai testé sur
plusieurs pc sous XP et aucun ne reproduit ce bug, jai de plus
désactivé les styles aero de vista mais le bug continue, que ce soit
dans HWND_DESKTOP, ou dans une fenetre normale... grand mystère
Kian_ix
Messages postés26Date d'inscriptiondimanche 18 février 2007StatutMembreDernière intervention 5 avril 2009 5 avril 2009 à 18:35
rajout d'un petit détail sur SetPixelAlt: un nombre d'appel à CreateSolidBrush supérieur à 100 provoque des réactions bizarres dans le programme, déclarer plutot le HBRUSH en global, et l'initialiser dans le winmain, et la plus de pb :)
DoctorNitro
Messages postés3Date d'inscriptionsamedi 28 mars 2009StatutMembreDernière intervention16 juillet 2009 16 juil. 2009 à 19:39
Salut tout le monde.
y'a un bout de temps je faisait un programme pour dessiner direct sur l'ecran de sublimes images
" SetPixel(GetDC(0),i,j,RGB(i,j,i*j) "
(dans 2 boucles en i et j allant de 0 a 255)
sa marchait nickel sur mon vieux P3 cadencé a 600MHz avec WindowsMe mais lorsque je lance ce petit bout de code sur une machine plus puissante avec WindowsXP (Vista pas encor tenté) le PC bloc totalement (ça prend 99% du temps processeur) comme dit plus haut . Et apres 5 bonnes minutes je me retrouve avec le 1/4 de l'image souhaité avec retour du pc a un fonctionnement normal.
...? mais pour qu'elle raison sa marche sur du vieux et pas sur du neuf ????
---->au final je l'ai cree dans un fichier .bmp directement
ou bien dans un picture box
for(int i=0; 255; i++)
{
for(int j=0; 255; j++)
{
SetPixel(GetDC(0),i+50,j+50,RGB(i,j,i*j)
//les +50 c'est pour centrer l'image modifier a votre convenance
// essayer aussi pour voir RGB(i,i+j,j)
}
}